問題タブ [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 に答える
1675 参照

c++ - 依存スコープ内での静的関数テンプレートの呼び出し

template<int I> void ft()struct template 内に静的関数テンプレートがあり、別の関数 template から呼び出して、bool テンプレート パラメーターを from に渡しtemplate<bool B> Sたいとします。fttemplate<bool B> void g()gS

これを GCC 4.5.2 でコンパイルすると、行に関する 2 つのエラーが発生しますS<B>::ft<12>()

  1. ')' トークンの前にプライマリ式が必要です
  2. 型 '<未解決のオーバーロードされた関数型>' および 'int' からバイナリ 'operator<' への無効なオペランド

Comeau ( http://www.comeaucomputing.com/tryitout/ ) も、厳密な C++03 モードで、閉じ括弧のすぐ下にキャレットを付けて、「expected an expression」と述べて、その行について不満を述べています。ただし、どちらのコンパイラもこの行について文句を言うことはS<B>::f()なく、Comeau は実際に最小限の例全体をリラックス モードでコンパイルできます。

のテンプレートを削除gし、代わりにSのテンプレート パラメータをインスタンス化すると、次のgようになります。

GCC は、厳密な C++03 モードでの Comeau と同様に、正常にコンパイルします。

上記の GCC の 2 番目のエラーから、が 12 未満S<B>::ft<12>かどうかをテストしようとしているかのように、 の解釈にあいまいさがあるようです。依存スコープ内の型。依存スコープに現れるものが型ではなく関数である場合、あいまいさを解決する方法を知っている人はいますか?S<B>::fttypename

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

c++ - テンプレートメンバー変換演算子のコンパイルエラー

クラスに変換演算子関数テンプレートを書き込もうとしていますが、完全には理解できないコンパイルエラーが発生します。

上記のコードにより、次のエラーが発生します

今私が困惑しているのは、コンパイラがreturnステートメントではTestPtr<ABC>::TestPtr(TestPtr<ABC>)なくpickを試みていることです。TestPtr<ABC>::TestPtr(ABC *)ただし、最初に目的のコンストラクターを使用して変数を作成してから値を返すと、正常に機能します。また、T*コンストラクターを無駄に明示的にしました。

g++とclang++の両方で試しましたが、同様の結果が得られました。誰かがここで何が起こっているのか説明してもらえますか?

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

c++ - 暗黙的なパラメーターを使用したC++関数テンプレートのインスタンス化

次のコードが正常にコンパイルされる理由がわかりません。

しかし、以下のように順序を切り替えるAB、コンパイルされません。

編集:アドホックな説明は大歓迎ですが、誰かが仕様を正確に指摘できればもっと良いでしょう。言う。ありがとう!

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

c++ - C++: 関数テンプレートの問題

どのデータ型でも機能するように、C++ 関数を修正する際に問題が発生しています。ありとあらゆる助けをいただければ幸いです。以下は私のコードであり、私が遭遇し続けるエラーです。

pivotPoint = partition(set, start, end);関数内で読み取る行については、次のquicksort()エラーが表示されます。

誰かがそれが何を意味し、どのようにそれを適合させるかを私に知らせることができれば、私は非常に感謝しています.

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

c++ - C++: Int と String を処理する関数テンプレート

int と double を処理できる関数テンプレートを作成するために、プログラミングの割り当てに取り組んでいます。私はそれをしましたが、楽しみのために、文字列も処理できるようにしたかったのです。これが以下の関数です。文字列を処理するにはどうすればよいですか?

前もって感謝します、

アダム

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

c++ - C++ で欠落しているテンプレート パラメーターを使用してテンプレート関数を呼び出すことはできますか?

これは、行われたインタビューの質問です。

どの行にエラーがありますか?

テンプレート パラメータが定義と一致しないため、2 行目にエラーがあります。テンプレート パラメータが欠落しているため、5 行目にエラーがあります。

しかし、1行目はエラーではなく、なぜかわかりませんが、テンプレートパラメータも抜けていませんか?

ありがとう !

0 投票する
4 に答える
74 参照

c++ - オーバーロードされた 2 つのテンプレートのうち、どちらが呼び出されるか?

私はまだテンプレートを見つけようとしています。特殊化ルールについて読みましたが、ここで何が起こっているのかわかりません。

templates.h で次のように定義しました。

これを含めて、このようにメインで呼び出すと

私は得る

ここで問題は、int の最初のほうが 2 番目よりも具体的であるのはなぜですか? 少なくともあいまいで、まったく機能しないはずだと思います。

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

c++ - インライン テンプレートの特殊化が役立つのはなぜですか? また、インライン化する必要がありますか?

テンプレートの特殊化の問題は、テンプレート パラメーターがどこにも使用されていないため、通常の関数のように扱われることです。

そのため、次のコードをヘッダー ファイルに入れると、最初は機能します。

ただし、ヘッダーが 2 つのファイルに含まれていると、これは機能しなくなります。この場合、(VS2010で)得られるエラーは次のとおりです。

これは、他の多くの質問で述べられているように、インラインキーワードを使用することで修正できます。

今、これは私に2つの質問を提起します:

  1. これを行う他の方法はありますか?ソースファイルに特殊な関数を入れてもうまくいかないようです。おそらく、ヘッダーに何らかの宣言が必要になるためです。
  2. インラインは実際に何をしますか?インラインは使用すべきではないというのは、インターネット全体で一般的な経験則のようです。コンパイラは「いずれにせよ、関数を好きなようにインライン展開する可能性が高い」からです。では、コンパイラが「インライン」として宣言した関数をインライン化しない可能性がある場合、なぜこれが機能するのでしょうか?
0 投票する
1 に答える
2294 参照

c++ - テンプレートの typedef を引数として関数テンプレートに渡す

テンプレート typedef を引数として関数テンプレートに渡そうとしています。ただし、次のエラーが発生します。

TestTemplates.cpp:11: エラー: '&' の前に unqualified-id が必要です トークン

TestTemplates.cpp:11: エラー: '&' の前に unqualified-id が必要です トークン

TestTemplates.cpp:11: エラー: '&' の前に初期化子が必要です トークン

TestTemplates.cpp:25: エラー: 'func' はこのスコープで宣言されていません

誰でもこのエラーを修正する方法を指摘できますか。いくつかの投稿を見ましたが、解決策が見つかりません。ありがとう