タグ付けされた質問 「templates」

テンプレートタグは、汎用プログラミング(特にC ++)、およびテンプレートエンジンを使用したデータ/ドキュメントの生成など、複数のコンテキストで使用されます。このタグを実装の重い質問に使用する場合-実装が記述されているコード言語にタグを付けます。

7
C ++で再帰的に整数のテンプレートパラメーターを一致させることは可能ですか?
次の問題があります。N次元ベクトルを次のように定義します #include <vector> #include <utility> #include <string> template <int N, typename T> struct NVector{ typedef std::vector<typename NVector<N-1,T>::type> type; }; template <typename T> struct NVector<1,T> { typedef std::vector<T> type; }; ネストされたベクトルのリーフ要素をいくら深くても変換でき、同じ形状の新しいネストされたベクトルを返す、より高次の関数マップを書きたいと思います。私が試してみました template <int N, typename T, typename Mapper> struct MapResult { typedef decltype ( (std::declval<Mapper>()) (std::declval<T>()) ) basic_type; typedef typename NVector<N, …

4
C ++メタプログラミングですべてのテンプレートを使用していますか?
私はメタプログラミングが一般的であり、特にそれがC ++で何であるかを理解しようとしています。c ++メタプログラミングを検索すると、テンプレートメタプログラミング(TMP)のチュートリアルは表示されますが、テンプレートの特定の使用法またはテンプレートのすべての使用法のみが分類されているかどうかの説明はありません。 私の質問は、C ++でのテンプレートのすべての使用がメタプログラミングとして分類されるかどうかです。それがなぜなのか、そうでないのかについての説明も役に立ちます。ありがとうございました。

2
テンプレートクラスの演算子+オーバーロードの戻り値の型
テンプレート化されたnumクラスを構築しようとしています。このクラスには、valタイプがのパブリック属性が必要Tです。これは、唯一のテンプレートパラメータです。さらに、値を提供する場合は、属性(val)をこの値で初期化する必要があります。これを行うには、次のコードを作成しました。 #include <iostream> template<class T> class Num { public: T val; Num():val(0) { std::cout<<"default constr used"<<std::endl; } Num(T value):val(value) {std::cout<<"constr (T value) used"<<std::endl; } ~Num() { std::cout<<"destructor used"<<std::endl; } template<typename U> Num operator+(const Num<U>& other) { return val+other.value; } }; さらにmain()、次のようなプログラムをテストする関数を作成しました。 int main() { std::cout << Num<int>(1) + Num<double>(2.0); return …

2
一致するテンプレートクラスの部分クラステンプレートの特殊化が、テンプレートが一致しない別の部分的特殊化とあいまいであるのはなぜですか?
質問はタイトルの文章で説明するには難しすぎるかもしれませんが、これは最小限の例です: #include <iostream> #include <type_traits> template <class T, class U, class Enabler> struct my_trait : std::false_type {}; template <class T, class U> struct my_trait<T, U, std::enable_if_t<std::is_same<T, U>::value>> : std::true_type {}; template <class T> class temped {}; template <class T> struct my_trait<temped<T>, temped<T>, void> : std::false_type {}; template <class T, class …

3
値またはコールバック関数の割り当て時のC ++オーバーロードテンプレート
次のようなことをしようとしています... template <class T> struct Wrapper { template <class U> void set(const U& u) { myT = u; } template <class F> void set(F f) { myT = f(); } T myT; }; ここでSFINAEを使用する必要があることはわかっていますが、コールバックパラメーターと値パラメーターをどのように区別しますか?値をコールバックとして使用できないと想定しても安全です。 私が試したenable_ifとis_function, result_of、invoke_result、is_invocable、など、それのどれも右に動作しません。可能ですか?
8 c++  templates  c++17 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.