需要帮助解码此typedef

Vis*_*hal 4 c++ arrays typedef reference c++11

我正在尝试创建对数组的引用.
它以这种方式工作:

typedef int array_type[100];

int main() {
    int a[100];
    array_type &e = a;    // This works
}
Run Code Online (Sandbox Code Playgroud)

但后来我试图删除typedef,并得到相同的工作.没有成功.

int main() {
    int a[100];
    // int[100] &e = a;    // (1) -> error: brackets are not allowed here; to declare an array, place the brackets after the name
    // int &e[100] = a;    // (2) -> error: 'e' declared as array of references of type 'int &'
}
Run Code Online (Sandbox Code Playgroud)

我的解释有typedef什么问题?我怎么能删除typedef,仍然得到相同的功能.

son*_*yao 12

您需要添加括号来表明这是对数组的引用,而不是数组的引用.例如

int (&e)[100] = a;
Run Code Online (Sandbox Code Playgroud)

或者使用autodecltype(从C++ 11开始)使其更简单.

auto& e = a;
decltype(a)& e = a;
Run Code Online (Sandbox Code Playgroud)