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

履歴 編集

function
<optional>

std::optional::operator->(C++17)

// optional<T>版のオーバーロード
constexpr const T* operator->() const; // (1) C++17
constexpr T* operator->();             // (2) C++17

// optional<T&>版のオーバーロード (C++26)
constexpr T* operator->() const noexcept; // (3) C++26

概要

保持している有効値のメンバにアクセスする。

  • (1) : optional<T>のconst版。const T*を返す
  • (2) : optional<T>の非const版。T*を返す
  • (3) : optional<T&>の場合。T*を返す

optional<T>では (1), (2) が定義され、optional<T&>では (3) のみが定義される。

堅牢化された事前条件

*thisが有効な値を保持していること

戻り値

  • (1) : 有効値へのconst T*
  • (2) : 有効値へのT*
  • (3) : 参照先へのT*

例外

投げない

備考

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

#include <iostream>
#include <optional>
#include <string>

int main()
{
  std::optional<std::string> p = "Hello";
  if (p) {
    std::size_t size = p->size(); // 有効値のメンバ関数を呼び出す
    std::cout << size << std::endl;
  }
}

出力

5

バージョン

言語

  • C++17

処理系

関連項目

参照