【发布时间】:2015-04-06 08:25:55
【问题描述】:
请注意,我只是对 C++ 语法的可能性感兴趣,而不是对任何实际用途。
很容易定义一个数组类型。例如,int a[3]; 定义数组类型 3 int,而 const int a[3]; 或 int const a[3]; 定义数组类型 3 const int。这三种形式实际上都没有定义某种T 类型的const 数组(当然,它本身可以被const 修改)。因此,以下代码将无法编译:
void f(int (&a)[3]) {...}
f({1, 2, 3});
原因很简单:非常量 lval 引用不能绑定到 rval 临时。纠正代码的一种方法是:
typedef int ArrOfInt[3];
void f(const ArrOfInt& a) {...}
f({1, 2, 3});
我的问题是:C++ 是否有用于 const 数组类型的内联定义的语法,所以首先不需要 typedef?
【问题讨论】:
标签: c++ arrays syntax constants language-lawyer