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

履歴 編集

function
<optional>

std::optional::operator*(C++17)

constexpr const T& operator*() const&;   // (1)
constexpr T& operator*() &;              // (2)
constexpr T&& operator*() &&;            // (3)
constexpr const T&& operator*() const&&; // (4)

概要

有効値を取得する。

  • (1) : *thisconst左辺値である場合に、有効値へのconst左辺値参照を返す
  • (2) : *thisが非const左辺値である場合に、有効値への非const左辺値参照を返す
  • (3) : *thisが右辺値である場合に、有効値への右辺値参照を返す
  • (4) : *thisconst右辺値である場合に、有効値へのconst右辺値参照を返す

効果

  • (1), (2) : 有効値を保持している場合、有効値への参照を返す
  • (3), (4) : 有効値を保持している場合、有効値をムーブして返す

例外

  • (1), (2) : 投げない

備考

optionalクラスはスマートポインタとしても見なせるため、この演算子のようなポインタのインタフェースを持つ。非ポインタインタフェースであるvalue()の使用も検討するとよい。

#include <iostream>
#include <optional>

int main()
{
  std::optional<int> p = 3;
  if (p) {
    int result = *p; // 保持している値を取得する
    std::cout << result << std::endl;
  }
}

出力

3

バージョン

言語

  • C++17

処理系

関連項目