問題タブ [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.

0 投票する
0 に答える
62 参照

c++ - テンプレート テンプレート パラメーターは、新しい C++ 標準でサポートされている関数に対してサポートされていますか?

本 C++ Template: The complete Guide で次のステートメントを見つけました。

関数テンプレートのテンプレート テンプレート パラメーターは使用できません。

しかし、彼は次のコードをコンパイルして実行します。

これは、新しい C++ 標準が関数のテンプレート テンプレート パラメーターをサポートするということですか? 次の投稿の答えは別のことを言っています: How to get template template argument deduction working with functions?

0 投票する
5 に答える
650 参照

c++ - テンプレート テンプレート パラメーターを使用した引数推定

クラステンプレートがあります。const_iteratorこのクラス テンプレート内で、sのコレクションでsを受け入れるメンバー関数テンプレートを定義しようとしていますstring。コレクション自体は任意の種類の StdLib コレクションにすることができますが、現実的には か のいずれかになりvectorますlist

コレクションは任意の型になる可能性があるため、template-templateパラメーターを使用してコレクションの型を指定しています。ただし、常に のコレクションになりstringます。メンバー関数を呼び出すときにコレクションの型を指定する必要がないように、テンプレートの引数推定が機能するようにします。

私の意図したユースケースに似た SSCCE に続くコード。

これまでのところ、クラス定義 ( Live Demo ) は次のとおりです。

クラス テンプレートのインスタンス化のコンパイルが成功します。

しかし、引数の演繹法を活用しようとすると (それがなければ、この演習全体はほとんど無意味です):

GCC は、テンプレート引数を推測できないと文句を言います。

最終的に、私が本当に気にかけているDoItのは、コレクションの begin および end イテレータで呼び出せることだけですstring。コレクションの実際のタイプはvectorまたはlistのいずれかであり、テンプレート引数を指定する必要も、コンテナーに基づいてオーバーロードする必要もありません。

どうすればこれを機能させることができますか?

私の実際のユースケースは C++03 であることに注意してください。C++11 ソリューションは歓迎されますが、C++03 ソリューションのみを受け入れることができます。

0 投票する
3 に答える
79 参照

c++ - 別のタイプのテンプレート化されたコンテナーを返すことはできますか?

このように動作する関数を作成するにはどうすればよいですか? 戻り値の型を正しく宣言できないようです。

0 投票する
2 に答える
133 参照

c++ - テンプレート< テンプレートsomething_else >、これは何ですか?

私は C++11 の学習を始めたばかりで、新機能のリストにこの構文を見たことがありません。

それは何で、どのように機能しますか?

0 投票する
2 に答える
184 参照

c++ - 型とテンプレート テンプレート パラメーターを使用したテンプレート クラスの型パラメーターの部分的な特殊化

型パラメーターとテンプレート テンプレート パラメーターを持つ、次のテンプレート クラスの型パラメーターを特化したいと考えています。

.template次の各スニペットの最後の行にand /or を追加および/または省略して、すべての順列を試しtypenameましたが、コンパイルされません。

1.)

2.)

3.)

4.)

それらのどれも機能しないのはなぜですか?

該当する各スニペットの最後の行について:

  • クラス で使用される型であることがtypename明確にされていないか、またはこの構文はのクラス定義の本体内でのみ使用できますか?EFoo{}Bar
  • templateがテンプレートであることを明確にしないFooため、コンパイラが「より小さい」Foo <として解析するのを防ぎますか、またはこの構文はのクラス定義の本体内でのみ使用できますか?Foo{}Bar

どうすればこれを機能させることができますか?