最終更新日時(UTC):
が更新

履歴 編集

添字演算子の多次元サポート(C++23)

概要

C++23では、多次元配列クラスを定義するために必要となる、添字演算子のオーバーロードを定義する際の複数引数を許可する。

R operator[](int x, int y, int z);

複数の許可がされるまでは、以下のような回避策がとられていた:

  • 添字アクセスを、関数呼び出し演算子で代用
  • カンマ演算子をオーバーロードして、複数引数をひとつの引数にまとめる

struct Matrix2x2 {
  float data[2 * 2];

  float& operator[](int x, int y) {
    return data[y * 2 + x];
  }
};

#include <iostream>
int main() {
  Matrix2x2 mat = {
    1.0f, 2.0f,
    3.0f, 4.0f
  };

  float r = mat[0, 1];
  std::cout << r << std::endl;
}

出力

3

関連項目

参照