オーバーロードされた関数ポインターをパラメーターとしてテンプレート関数に渡そうとしています。
float Function1(float par1)
{
return 0;
}
float Function1(float par1, float par2)
{
return 0;
}
template<typename R, typename A1>
void Bind(R(*func)(A1))
{
std::cout << "Correct one called\n";
}
template<typename R, typename A1, typename A2>
void Bind(R(*func)(A1, A2))
{
std::cout << "False one called\n";
}
int main()
{
Bind<float, float>(&Function1);
}
2つのfloatパラメーターを使用して関数を明示的に呼び出しても、コンパイラーは正しい呼び出しを解決できないようです。コンパイラは「あいまいな関数呼び出し」エラーを示します。
ここに小さなサンプルを作成しました:http: //liveworkspace.org/code/4kVlUY$195
このエラーの原因は何ですか?ありがとうございました。