Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Standard library header <optional> (C++17)

      From cppreference.com
      <cpp‎ |header
       
       
      Standard library headers
       

      This header is part of thegeneral utility library.

      Contents

      Includes

      (C++20)
      Three-way comparison operator support[edit]

      Classes

      (C++17)
      a wrapper that may or may not hold an object
      (class template)[edit]
      exception indicating checked access to an optional that doesn't contain a value
      (class)[edit]
      hash support forstd::optional
      (class template specialization)[edit]
      (C++17)
      indicator of anstd::optional that does not contain a value
      (class)[edit]
      Forward declarations
      Defined in header<functional>
      (C++11)
      hash function object
      (class template)[edit]

      Constants

      (C++17)
      an object of typenullopt_t
      (constant)[edit]

      Functions

      Comparison
      (C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20)
      comparesoptional objects
      (function template)[edit]
      Specialized algorithms
      specializes thestd::swap algorithm
      (function template)[edit]
      creates anoptional object
      (function template)[edit]

      [edit]Synopsis

      // mostly freestanding#include <compare> namespace std{// class template optionaltemplate<class T>class optional;// partially freestanding template<class T>constexprboolranges::enable_view<optional<T>>=true;template<class T>constexprauto format_kind<optional<T>>= range_format::disabled; template<class T>  concept/*is-derived-from-optional*/= requires(const T& t){// exposition-only[]<class U>(const optional<U>&){}(t);}; // 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,class U>    requires(!/*is-derived-from-optional*/<U>)&& three_way_comparable_with<T, U>constexpr compare_three_way_result_t<T, U> operator<=>(const optional<T>&,const U&); // specialized algorithmstemplate<class T>constexprvoid swap(optional<T>&, optional<T>&)noexcept(/* see description */); template<class T>constexpr optional<decay_t<T>> 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>>;}

      [edit]Class templatestd::optional

      namespace std{template<class T>class optional{public:using value_type= T;using iterator=/* implementation-defined */;using const_iterator=/* implementation-defined */; // 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= remove_cv_t<T>>constexprexplicit(/* see description */) optional(U&&);template<class U>constexprexplicit(/* see description */) optional(const optional<U>&);template<class U>constexprexplicit(/* see description */) optional(optional<U>&&); // destructorconstexpr ~optional(); // assignmentconstexpr optional& operator=(nullopt_t)noexcept;constexpr optional& operator=(const optional&);constexpr optional& operator=(optional&&)noexcept(/* see description */);template<class U= remove_cv_t<T>>constexpr optional& operator=(U&&);template<class U>constexpr optional& operator=(const optional<U>&);template<class U>constexpr optional& operator=(optional<U>&&);template<class...Args>constexpr T& emplace(Args&&...);template<class U,class...Args>constexpr T& emplace(initializer_list<U>, Args&&...); // swapconstexprvoid swap(optional&)noexcept(/* see description */); // iterator supportconstexpr iterator begin()noexcept;constexpr const_iterator begin()constnoexcept;constexpr iterator end()noexcept;constexpr const_iterator end()constnoexcept; // observersconstexprconst T* operator->()constnoexcept;constexpr T* operator->()noexcept;constexprconst T& operator*()const&noexcept;constexpr T& operator*()&noexcept;constexpr T&& operator*()&&noexcept;constexprconst T&& operator*()const&&noexcept;constexprexplicit operatorbool()constnoexcept;constexprbool has_value()constnoexcept;constexprconst T& value()const&;// freestanding-deletedconstexpr T& value()&;// freestanding-deletedconstexpr T&& value()&&;// freestanding-deletedconstexprconst T&& value()const&&;// freestanding-deletedtemplate<class U= remove_cv_t<T>>constexpr T value_or(U&&)const&;template<class U= remove_cv_t<T>>constexpr T value_or(U&&)&&; // monadic operationstemplate<class F>constexprauto and_then(F&& f)&;template<class F>constexprauto and_then(F&& f)&&;template<class F>constexprauto and_then(F&& f)const&;template<class F>constexprauto and_then(F&& f)const&&;template<class F>constexprauto transform(F&& f)&;template<class F>constexprauto transform(F&& f)&&;template<class F>constexprauto transform(F&& f)const&;template<class F>constexprauto transform(F&& f)const&&;template<class F>constexpr optional or_else(F&& f)&&;template<class F>constexpr optional or_else(F&& f)const&; // modifiersconstexprvoid reset()noexcept; private:    T* val;// exposition-only}; template<class T> optional(T)-> optional<T>;}

      [edit]Class templatestd::bad_optional_access

      namespace std{class bad_optional_access:public exception{public:// for the specification of the special member functionsconstexprconstchar* what()constnoexcept override;};}
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/optional&oldid=178392"

      [8]ページ先頭

      ©2009-2025 Movatter.jp