1

这段代码

#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 推断类型而不添加引用。

4

0 回答 0