1. ホーム
  2. c++

"template<>"と "template "の括弧なし比較 - その違いは?

2023-07-18 16:53:25

質問

宣言したとします。

template <typename T> void foo(T& t);

では

template <> void foo<int>(int& t);

template void foo<int>(int& t);

という意味ですか?また、template-with-no-brackets と template-with-empty-brackets は他の文脈で他の意味を持っているのでしょうか?


に関連しています。 C++ テンプレートの特定のインスタンスを強制的にインスタンス化する方法は?

どのように解決するのですか?

template <> void foo<int>(int& t); を宣言しています。 特殊化 を宣言し、異なるボディを持つ可能性があります。

template void foo<int>(int& t); 明示的なインスタンス化 を引き起こしますが、特殊化を導入するわけではありません。それはただ、特定の型のためのテンプレートのインスタンス化を強制するだけです。