問題タブ [function-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 投票する
1 に答える
2487 参照

node.js - nodejs: 戻り値のない関数テンプレート

node.jsの指示に従って、ファクトリ ラップされたオブジェクトを実装しました。
これまでのところ、動作します。しかし、私がうまくいかないのは、戻り値のない関数です。
すなわち:(リンク内の例の拡張)
myObject.h

そしてmyObject.cc

動作しません。なんで?

次のエラーが表示されます。

本当に戻り値が必要ですか? つまり、null を返して無視することができますが、問題ではありませんが、それは本当に良い解決策ではありません。

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

c++ - 1 つのパラメーターとしてカウントされるテンプレート テンプレート パラメーター

以下のコードでは、テンプレート引数がテンプレートの場合、クラス テンプレートは 1 つのパラメーターを使用しますが、関数テンプレートは 2 つを使用します。これは、型推論を使用する場合は問題ありませんが、明示的なテンプレートのインスタンス化を使用する場合は奇妙です。

テンプレート テンプレート パラメータを 1 つのパラメータとして記述することは可能ですか?

この質問は、関数オーバーロード マッチング テンプレート テンプレートにリンクされています

編集:

1 つのパラメーター構文がある場合、オーバーロードの解決で間違った関数が選択されるため、この質問は適切ではないという結論に達しました。これは私には驚きですが、これを証明するコードは次のとおりです (変更された 1 つのテンプレート関数のオーバーロードを除いて、以前と同じコード)。

EDIT2: 明示的なテンプレートの指定をスキップして、メインにさらに印刷を追加しました。

EDIT3: 以下のコードはナンセンスです。@DyPが正しく指摘したように、私は間違いを犯しました。私はvoid F(R<R<T>>)明示的なケースで呼び出していますが、 ではありませんvoid F(R<T>)

0 投票する
1 に答える
691 参照

c++ - 明示的なテンプレート パラメーターを使用してストリーム オペレーター テンプレート oerload を呼び出す

関数テンプレートの明示的なテンプレート引数は、些細なコードのコンテキストであっても、私にとって何度も驚きの源です。そのようなコードはアンチパターンと見なされるべきですか? 一部の開発者は、他の StackOverflow スレッドでこれを仮定しています。

次のコードでは、適切な関数オーバーロードが見つからないことを示すエラーがコード位置 (1) でコンパイラによって報告されます。コンパイラがあいまいさを検出したとしてもそれほど驚かなかったでしょうが、そうではありません。ヒントはありますか?gcc 4.6.2 を使用しています

編集:私は解決策を探していません。解決策の例は、cppreference に記載されています。説明を探しています。

0 投票する
1 に答える
1264 参照

c++ - ラッパークラスがそのコンストラクター引数をstd::vectorのコンストラクターに転送する方法は?

データ メンバーwrapperをラップするクラスがあります。のコンストラクターがその引数を の ctor に転送するようにしstd::vector<int>ます。これを実装するために、可変個引数テンプレート コンストラクターを使用しようとしました。は ctor によって構築されるため、実行時にのctorをアクティブにしたいwrappervector<int>std::vector<int> v{1, 2, 3}std::initializer_listwrappervectorinitializer_list

wrapper mywrap{1, 2, 3}.

しかし、私は望ましい結果を得られませんでした:

出力は次のとおりです。

wrapper wrap1{ 1 };を呼び出しますexplicit vector (size_type n);

wrapper wrap2{ 1, 2 };通話

vector (size_type n, const value_type& val, const allocator_type& alloc = allocator_type());.

wrapper wrap3が指定されていない場合は失敗しinitializer_list<int>ます。

vectorいずれの場合も、のinitializer_list<int>ctor をアクティブにしたかったのです。これはどのように修正できますか?

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

c++ - 非テンプレート クラスのメンバ関数テンプレートの特殊化

メンバー関数テンプレートの次の特殊化はbar有効ですか? gcc 4.5.3 および VS .NET 2008 でコンパイルされます。関数テンプレートを特殊化できないと読んだことを漠然と思い出したので、混乱しています。