考虑以下类型定义:
typedef int (&foo_t)[3];
或
using foo_t = int(&)[3];
在类型中添加const限定词时,它将被忽略:
int foo[3] = {1, 2, 3};
const foo_t fooref = foo;
fooref[0] = 4; // No error here
或者当我尝试为其分配const数组时:
const int foo[3] = {1, 2, 3};
const foo_t fooref = foo;
/* error: binding reference of type ‘foo_t’ {aka ‘int (&)[3]’} to ‘const int [3]’ discards qualifiers
const foo_t fooref = foo;
^~~ */
如何将const
添加到类型定义的数组引用中?
答案 0 :(得分:1)
您不能简单地将const
添加到类型定义的类型所引用的类型。考虑一下定义指针类型的方法:
typedef int* pint_t;
类型const pint_t
指向不可修改的int
的指针。
如果可以,只需将其添加到定义中(或定义您类型的const
变体):
typedef const int (&foo_t)[3];
或
using foo_t = const int(&)[3];
如果这是不可能的,那么使最里面的类型const
的通用拆包方案可以实现,但可能不建议-即检查设计。