タグ付けされた質問 「template-argument-deduction」

1
テンプレート演繹ガイドとは何ですか?いつ使用する必要がありますか?
C ++ 17標準では、「テンプレート演繹ガイド」が導入されています。これらは、このバージョンの標準で導入されたコンストラクターの新しいテンプレート引数の推論と関係があると思いますが、それらが何であり、何のためにあるのかについての簡単なFAQスタイルの説明はまだ見ていません。 C ++ 17のテンプレート控除ガイドとは何ですか? なぜ(そしていつ)それらが必要なのですか? どうすれば宣言できますか?

3
C ++が2番目のテンプレート引数を推測しないようにするにはどうすればよいですか?
私はC ++ライブラリ(strf)を使用していますが、その中には、次のコードが含まれています。 namespace strf { template <typename ForwardIt> inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template <typename Range, typename CharT> inline auto range(const Range& range, const CharT* sep) { /* ... */ } } 今、strf::range<const char*>(some_char_ptr, some_char_ptr + some_length)私のコードで使用したいと思います。しかし、そのようにすると、次のエラーが発生します(CUDA 10.1のNVCCを使用)。 error: more than one instance of …

1
テンプレートの自動戻りタイプとあいまいさ
オーバーロードされたテンプレート関数があります: template<typename T1, typename T2> auto overMax(T1 a, T2 b) { std::cout << __FUNCSIG__ << std::endl; return b < a ? a : b; } template<typename RT, typename T1, typename T2> RT overMax(T1 a, T2 b) { std::cout << __FUNCSIG__ << std::endl; return b < a ? a : b; …

2
関数型の引数のテンプレート引数の控除
次のプログラムを検討してください。 #include <iostream> template <typename T> void f( void ( *fn )( T ) ) { fn( 42 ); } void g( int x ) { std::cout << "g( " << x << " );\n"; } int main() { f( g ); } プログラムは正常にコンパイルされ、その出力は g( 42 ); 今度は、非テンプレート関数の名前を変更してみましょうgにf。 #include <iostream> …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.