请注意,我只对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});
原因很简单:非const左值引用无法绑定到右值临时对象。修正代码的一种方法是:
typedef int ArrOfInt[3];
void f(const ArrOfInt& a) {...}
f({1, 2, 3});
我的问题是:C++是否有内联定义const数组类型的语法,以便首先不需要typedef?
const
。如果我将其更改为const int (&a)[3]
,那么GCC会接受它。clang也是如此。 - user743382