此代码
#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会添加引用。我认为括号中的函数名是prvalue,因此decltype在不添加引用的情况下推断出类型。