我正在阅读 litb 关于 SFINAE 的问题 here我想知道他的代码究竟在声明什么。下面是一个更简单(没有模板)的示例:
int (&a())[2];
那到底在声明什么? &的作用是什么?更让我困惑的是,如果我改为声明以下内容
int b()[2];
我在声明一个返回数组的函数时出错,而第一行没有这样的错误(因此,有人会认为第一个声明不是函数)。但是,如果我尝试分配一个
a = a;
我收到一条错误消息,提示我正在尝试将函数分配给...所以现在它是一个函数。这到底是什么东西?
最佳答案
这些很棒的程序叫做 cdecl 和 c++decl。它们对于找出复杂的声明非常有帮助,尤其是对于 C 和 C++ 用于函数指针的拜占庭形式。
tyler@kusari ~ $ c++decl
Type `help' or `?' for help
c++decl> explain int (&a())[2]
declare a as function returning reference to array 2 of int
c++decl> explain int b()[2]
declare b as function returning array 2 of int
a 返回一个引用,b 不返回。
关于c++ - 这一行是否声明了一个函数? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024341/