隐式转换为数组索引类型

Implicit conversion to array index type

假设我有以下类型:

struct XY
{
  short nIndex;
  
  constexpr operator int()
  {
     return nIndex;
  }
};

我可以更改什么来完成以下工作:

char arr[10][255];

constexpr XY xy{1};

char *x = arr[xy];

我认为只给 XY 一个转换为整数的运算符就足够了,但我收到错误:

no match for 'operator[]' (operand types are 'const char [10][255]' and 'const XY')

由于变量是constexpr,所以不能调用非const限定的转换运算符。解决方案很简单:使转换运算符 const 合格:

constexpr operator int() const