爲什麼在下面的代碼中出現錯誤?我該如何解決它?函數模板和void
#include <functional>
#include <iostream>
int foo()
{
std::cout << "::foo() \n";
return 0;
}
void bar()
{
std::cout << "::bar() \n";
}
template <typename T>
T Hook(const std::function<T()>& action, T def = T())
{
try
{
return action();
}
catch (const std::exception& ex)
{
}
catch (...)
{
}
return def;
};
int main()
{
std::function<int()> foo_func(foo);
Hook(foo_func);
std::function<void()> bar_func(bar);
// Hook(bar_func); // Error
}
你試圖返回一個空值? – Shaggi
@Shaggi是的,我可以做到 - http://ideone.com/0835o2 – FrozenHeart
你得到什麼錯誤? –