Skip to content

Latest commit

 

History

History
58 lines (41 loc) · 1.5 KB

multidimensional_subscript_operator.md

File metadata and controls

58 lines (41 loc) · 1.5 KB

添字演算子の多次元サポート [P2128R6]

  • cpp23[meta cpp]

このページはC++23に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

概要

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

参照