c++ - 这一行是否声明了一个函数? C++

标签 c++ function-declaration

我正在阅读 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/

相关文章:

c++ - RSA_sign 和 EVP_DigestSignX() 之间的区别

c++ - 痛苦缓慢的函数调用

c++ - 当其键不存在时初始化 std::map 值

c++ - 什么时候 forward<T> 等同于 forward<decltype(Targ)> ?

c++ - 使用多个头文件和 cpp 文件帮助

c - 函数指针声明

声明不带参数的函数原型(prototype)会造成安全漏洞吗?

c - 如何声明函数指针参数

c++ - 非多态基类中的析构函数

c - 关于形式参数中 C 结构数组的错误