我試圖將一個重載的函數指針作爲參數傳遞給模板函數。帶模板參數的函數指針模糊
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浮動參數顯式的函數,編譯器似乎無法解析正確的電話。 編譯器顯示'模糊函數調用'錯誤。
我創建了一個小樣本的位置: http://liveworkspace.org/code/4kVlUY$195
這是什麼錯誤的原因是什麼? 謝謝。
是仍然需要綁定調用然後,因爲歧義在別處? –
stijn
2013-03-25 12:00:35
我可以安全地忽略在這一點上我假設? Bind( static_cast (&Function1) ); –
mikbal
2013-03-25 12:09:56
當然,模板參數將被推斷出來。 – mfontanini 2013-03-25 12:10:50