我在弄乱模板,发现提供了一个示例,在decltype语句中调用的函数没有执行:
template<typename Func, typename... Args>
auto Call(Func func, Args&&... args) -> decltype(func(std::forward<Args>(args)...))
{
return func(std::forward<Args>(args)...);
}
void main()
{
std::cout << Call([](int x, int y){ std::cout << x << y << std::endl; return true; }, 1, 2) << std::endl;
std::cin.ignore();
}
这是为什么?我并不是想在声明中称呼它,我只是很好奇为什么会这样。