標準ライブラリヘッダ <optional>
提供: cppreference.com
クラス | ||
(C++17) | 値を保持するかもしれないし保持しないかもしれないラッパー (クラステンプレート) | |
(C++17) | 値を格納していない optional へのチェック付きアクセスを表す例外 (クラス) | |
(C++17) | std::hash アルゴリズムの特殊化 (クラステンプレートの特殊化) | |
(C++17) | 未初期化状態の optional 型を表す標識 (クラス) | |
定数 | ||
(C++17) | nullopt_t 型のオブジェクト (定数) | |
関数 | ||
比較 | ||
optional オブジェクトを比較します (関数テンプレート) | ||
アルゴリズムの特殊化 | ||
(C++17) | std::swap アルゴリズムの特殊化 (関数) | |
(C++17) | optional オブジェクトを作成します (関数テンプレート) |
[編集]概要
namespace std {// class template optionaltemplate<class T>class optional; // no-value state indicatorstruct nullopt_t{/* see description */};inlineconstexpr nullopt_t nullopt(/* unspecified */); // class bad_optional_accessclass bad_optional_access; // relational operatorstemplate<class T, class U>constexprbool operator==(const optional<T>&, const optional<U>&);template<class T, class U>constexprbool operator!=(const optional<T>&, const optional<U>&);template<class T, class U>constexprbool operator<(const optional<T>&, const optional<U>&);template<class T, class U>constexprbool operator>(const optional<T>&, const optional<U>&);template<class T, class U>constexprbool operator<=(const optional<T>&, const optional<U>&);template<class T, class U>constexprbool operator>=(const optional<T>&, const optional<U>&);template<class T, three_way_comparable_with<T> U>constexpr compare_three_way_result_t<T,U> operator<=>(const optional<T>&, const optional<U>&); // comparison with nullopttemplate<class T>constexprbool operator==(const optional<T>&, nullopt_t)noexcept;template<class T>constexpr strong_ordering operator<=>(const optional<T>&, nullopt_t)noexcept; // comparison with Ttemplate<class T, class U>constexprbool operator==(const optional<T>&, const U&);template<class T, class U>constexprbool operator==(const T&, const optional<U>&);template<class T, class U>constexprbool operator!=(const optional<T>&, const U&);template<class T, class U>constexprbool operator!=(const T&, const optional<U>&);template<class T, class U>constexprbool operator<(const optional<T>&, const U&);template<class T, class U>constexprbool operator<(const T&, const optional<U>&);template<class T, class U>constexprbool operator>(const optional<T>&, const U&);template<class T, class U>constexprbool operator>(const T&, const optional<U>&);template<class T, class U>constexprbool operator<=(const optional<T>&, const U&);template<class T, class U>constexprbool operator<=(const T&, const optional<U>&);template<class T, class U>constexprbool operator>=(const optional<T>&, const U&);template<class T, class U>constexprbool operator>=(const T&, const optional<U>&);template<class T, three_way_comparable_with<T> U>constexpr compare_three_way_result_t<T,U> operator<=>(const optional<T>&, const U&); // specialized algorithmstemplate<class T>void swap(optional<T>&, optional<T>&)noexcept(/* see description */); template<class T>constexpr optional</* see description */> make_optional(T&&);template<class T, class... Args>constexpr optional<T> make_optional(Args&&... args);template<class T, class U, class... Args>constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args); // hash supporttemplate<class T>struct hash;template<class T>struct hash<optional<T>>;}
[編集]クラステンプレート std::optional
namespace std {template<class T>class optional {public:using value_type = T; // constructorsconstexpr optional()noexcept;constexpr optional(nullopt_t)noexcept;constexpr optional(const optional&);constexpr optional(optional&&)noexcept(/* see description */);template<class... Args>constexprexplicit optional(in_place_t, Args&&...);template<class U, class... Args>constexprexplicit optional(in_place_t, initializer_list<U>, Args&&...);template<class U = T>explicit(/* see description */)constexpr optional(U&&);template<class U>explicit(/* see description */) optional(const optional<U>&);template<class U>explicit(/* see description */) optional(optional<U>&&); // destructor ~optional(); // assignment optional& operator=(nullopt_t)noexcept;constexpr optional& operator=(const optional&);constexpr optional& operator=(optional&&)noexcept(/* see description */);template<class U = T> optional& operator=(U&&);template<class U> optional& operator=(const optional<U>&);template<class U> optional& operator=(optional<U>&&);template<class... Args> T& emplace(Args&&...);template<class U, class... Args> T& emplace(initializer_list<U>, Args&&...); // swapvoid swap(optional&)noexcept(/* see description */); // observersconstexprconst T* operator->()const;constexpr T* operator->();constexprconst T& operator*()const&;constexpr T& operator*()&;constexpr T&& operator*()&&;constexprconst T&& operator*()const&&;constexprexplicit operator bool()constnoexcept;constexprbool has_value()constnoexcept;constexprconst T& value()const&;constexpr T& value()&;constexpr T&& value()&&;constexprconst T&& value()const&&;template<class U>constexpr T value_or(U&&)const&;template<class U>constexpr T value_or(U&&)&&; // modifiersvoid reset()noexcept; private: T *val;// exposition only}; template<class T> optional(T)-> optional<T>;}