最終更新日時: 2026年02月26日 13時20分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<memory>

# std::shared_ptr::operator[](C++17)

    // 配列版のみ
    element_type&
      operator[](ptrdiff_t i) const; // (1) C++17
    constexpr element_type&
      operator[](ptrdiff_t i) const; // (1) C++26

## 概要

配列に対して、添字を使用して任意の位置の要素を参照する。

## 堅牢化された事前条件

- `get() != nullptr && i >= 0`
- 型`T`が`U[N]`の形式となっており、要素数が判明している場合、`i < N`であること

## 戻り値

`get()[i]`

## 備考

型`T`が配列ではない場合、この関数が宣言されるかは未規定。定義される場合、その戻り値は未規定

## 例外

投げない

## 例

    #include <memory>

    int main()
    {
      // 要素数がコンパイル時に判明している場合の型指定
      std::shared_ptr<double[1024]> p1 {new double[1024]};
      p1[1] = 3.14;

      // 要素数がコンパイル時に判明していない場合の型指定
      std::shared_ptr<double[]> p2 {new double[3]};
      p2[2] = 2.56;
    }

### 出力

## バージョン

### 言語

- C++17

### 処理系

- GCC: 7.2 ✅
- Clang:
- Visual C++: ??

## 参照

- P3037R6 `constexpr std::shared_ptr` and friends
- P3697R1 Minor additions to C++26 standard library hardening
- P3878R1 Standard library hardening should not use the 'observe' semantic