C ++ Primerから、テンプレートのパラメーター引数に対して、2種類の変換のみが実行されることがわかります。1つはconst変換であり、もう1つは配列/関数からポインターへの変換です。
しかし、明示的な議論になると、すべてが変わるようです。テンプレート関数があると仮定します。
template <typename T>
int compare(const T &a, const T &b)
{
// do comparison
}
明示的な引数が含まれていない場合、次のような関数呼び出しは不正です。
compare("foo", "foobar");
私たちが明示的に行うと、奇妙なことが起こります(実際には、奇妙ではないかもしれませんが、私にはわかりません)。
compare<std::string>("foo", "foobar");
2回目の呼び出しでは、「foo」と「foobar」がに変換されているようstd::string
ですが、これについては議論の余地があります。
テンプレートの明示的な引数に特別なルールはありますか?ありがとう。