問題タブ [template-templates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - テンプレート テンプレート (+テンプレート) パラメーターの内部テンプレートを未指定のままにする方法
次のコードをコンパイルするにはどうすればよいですか?
GCC-4.8.2 は不平を言います:
実際の問題は、コードの唯一の変更がコメントになる場合に、関数内で使用する固有線形代数ソルバー (例: http://eigen.tuxfamily.org/dox/classEigen_1_1BiCGSTAB.html ) を呼び出し元が指定できるようにする方法です。次から別の行を出力します。
現在、関数は次のように開始されます。
、呼び出し元にも Eigen::SparseMatrix を与える必要はなく、代わりに与えるだけ
テンプレートパラメータとして。
c++ - テンプレート テンプレート パラメータのデフォルトは、他のテンプレート タイプ パラメータを参照できますか?
私は次のようなことをしようとしています:
しかし、Visual Studio 2010 コンパイラは吐き出します:
エラー C3202: 'AA': テンプレート パラメーター '' の既定の引数が無効です。クラス テンプレートが必要です
B を次のテンプレートに置き換えると:
コードは正常にコンパイルされますが、私が望むものではありません。オリジナルが正当な C++ でない場合、「B」テンプレートのユーザーに同様のインターフェイスを提供する代替手段はありますか?
c++ - あらゆる種類のパラメータに一致する C++ 可変個引数テンプレート テンプレート引数
他の任意のテンプレートをパラメーターとして取り、テンプレート名と適切に一致させることができるテンプレート関数を作成できるかどうか疑問に思っていました (つまり、結果のクラスだけではありません)。私が働くことを知っているのはこれです:
たとえば、f(std::vector<int>())
orには一致しますf(std::list<int>())
が、 には機能しませんf(std::array<int, 3>())
。2 番目のパラメーターは asize_t
で型がないためです。
今、私は次のようなクレイジーなことをすることができると思います:
コンパイラがTemplateP
省略記号またはSizes
省略記号のいずれかが空になるように適切に導出することを期待しています。しかし、醜いだけでなく、型またはsize_t
パラメーターのいずれかを取るテンプレートでも機能します。bool
たとえば、パラメーターを含む任意のテンプレートとはまだ一致しません。
オーバーロードを使用したアプローチについても同じことが言えます。
size_t
さらに、とを混在させたい場合、このようなアプローチは機能しませんtypenames
。したがって、何かに一致するために必要なものは次のようなものです。省略記号で許可されるものにまったく制約はありません。
その構文は機能しませんが、このようなものを定義する他の構文があるのでしょうか?
これは主に、最初のパラメーターが常に固定されているさまざまなテンプレートがあり、戻り値の型に基づいて変更し、他のすべてを保持したい場合、言語で何が可能か疑問に思っています。実際に使用できる可能性があると思いました. このようなもの:
では、パターン マッチングを使用して、これを完全に一般的な方法で機能させる方法はありますか?
これは純粋な思考実験ではありません。なぜなら、私が立ち往生したユースケースは、コンテナーで動作し、不変の結果コンテナーを暗黙的に構築する純粋な機能プリミティブを作成することだったからです。結果コンテナーのデータ型が異なる場合、コンテナーが操作する型を知る必要があるため、コンテナーの唯一の要件は、テンプレートの最初のパラメーターが入力型である必要があるため、別の型に置き換えることができることです。結果の出力型ですが、コードはその後に続くテンプレート引数を無視する必要があり、それが型か値かを気にする必要はありません。
c++ - テンプレートのパラメーター パックの展開クラス
次のように定義されたいくつかのテンプレートクラスがあるとします
define_template::type を my_class に置き換えるエイリアス テンプレートを定義する必要があるため、3 つのクラスに対してこれを行うことができます。
理想的にはこのような可変引数テンプレートに対してこれを行うための構文を理解することはできません
これにより、「「...」で展開されていないパラメーターパック」というエラーが表示されます
正しいシナックスを知っている人はいますか?
以下のコメントから、clang でコンパイルされます。Cygwin を通じて gcc 4.8.2 を使用しています。