最終更新日時: 2026年03月23日 17時00分07秒 (JST)
Raclamusi が更新

履歴 編集

function
<optional>

# std::optional::begin(C++26)

    constexpr iterator begin() noexcept; // (1)
    constexpr const_iterator begin() const noexcept; // (2)

## 概要

`optional`をrangeとした時の先頭要素を指すイテレータを取得する。

## 効果

`has_value() == true`なら、保持している有効値を指すイテレータを返す。またこの時、`distance(begin(), end()) == 1` となる。

`has_value() != true`なら、末尾要素の次を指すイテレータを返す。この時、`begin() == end()` である。

## 例

    #include <iostream>
    #include <optional>

    int main()
    {
      std::optional<int> p1 = 1;
      for (auto i = p1.begin(); i != p1.end(); ++i) {
        std::cout << *i; // １度通る
      }

      std::optional<int> p2 = std::nullopt;
      for (auto i = p2.begin(); i != p2.end(); ++i) {
        std::cout << *i; // １度も通らない
      }
    }

### 出力

    1

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- P3168R2 Give std::optional Range Support