这段代码
#include<functional>
int foo(char);
int main()
{
std::function<decltype((foo))> f;
}
给出错误:
aggregate ‘std::function<int (&)(char)> f’ has incomplete type
and cannot be defined
在 gcc-4.7.2 中。我以为它会编译。
我知道我可以删除额外的括号以使其工作,但我试图了解正在发生的事情。
我不明白为什么 decltype 添加参考。我认为括号中的函数名称是纯右值,因此 decltype 推断类型而不添加引用。