C++ベース-関数テンプレートのタイプ導出の補足
ここでふと一つの問題を思いついた.
パラメータなしの関数テンプレートはクラステンプレートと同様にタイプ導出を行うことができず,関数テンプレートのタイプ導出メカニズムはパラメータマッチングの形式でタイプ導出を行うことが分かった.
template<typename T>
void foo()
{
T x = T();
}
template<typename T>
void foo2(T x)
{
++x;
}
template<typename T1, typename T2>
void foo3(T1 x)
{
}
int main(int, char**)
{
foo<int>(); //
foo(); // ,
foo2(5); // ,
foo3(5); // , T1
foo3<int>(5); // , T2
foo3<int, double>(5); //
return 0;
}
パラメータなしの関数テンプレートはクラステンプレートと同様にタイプ導出を行うことができず,関数テンプレートのタイプ導出メカニズムはパラメータマッチングの形式でタイプ導出を行うことが分かった.