Namespaces
Variants

cpp/header/optional: Difference between revisions

From cppreference.com
back to utility
fix
Line 5: Line 5:
{{dsc begin}}
{{dsc begin}}
{{dsc hitem | Name | Description}}
{{dsc hitem | Name | Description}}
{{dsc inc | cpp/utility/optional/dsc optional}}
{{dsc inc | cpp/utility/dsc optional}}
{{dsc inc | cpp/utility/optional/dsc bad_optional_access}}
{{dsc inc | cpp/utility/optional/dsc bad_optional_access}}
{{dsc inc | cpp/utility/optional/dsc in_place_t}}
{{dsc inc | cpp/utility/optional/dsc in_place_t}}

Revision as of 22:31, 9 June 2016

 
 
Standard library headers
 

Classes

Template:cpp/utility/optional/dsc in place t
Name Description
(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 for std::optional
(class template specialization) [edit]
(C++17)
indicator of an std::optional that does not contain a value
(class) [edit]

Functions

Comparison
(C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20)
compares optional objects
(function template) [edit]
Specialized algorithms
specializes the std::swap algorithm
(function template) [edit]
creates an optional object
(function template) [edit]

Synopsis

namespace std {

  template <class T> class optional;

  // In-place construction
  struct in_place_t{};
  constexpr in_place_t in_place{};

  // No-value state indicator
  struct nullopt_t{see below};
  constexpr nullopt_t nullopt(unspecified);

  // Class bad_optional_access
  class bad_optional_access;

  // Relational operators
  template <class T>
    constexpr bool operator==(const optional<T>&, const optional<T>&);
  template <class T>
    constexpr bool operator!=(const optional<T>&, const optional<T>&);
  template <class T>
    constexpr bool operator<(const optional<T>&, const optional<T>&);
  template <class T>
    constexpr bool operator>(const optional<T>&, const optional<T>&);
  template <class T>
    constexpr bool operator<=(const optional<T>&, const optional<T>&);
  template <class T>
    constexpr bool operator>=(const optional<T>&, const optional<T>&);

  // Comparison with nullopt
  template <class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator==(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator!=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator!=(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator<(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator<(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator<=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator<=(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator>(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator>(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator>=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator>=(nullopt_t, const optional<T>&) noexcept;

  // Comparison with T
  template <class T> constexpr bool operator==(const optional<T>&, const T&);
  template <class T> constexpr bool operator==(const T&, const optional<T>&);
  template <class T> constexpr bool operator!=(const optional<T>&, const T&);
  template <class T> constexpr bool operator!=(const T&, const optional<T>&);
  template <class T> constexpr bool operator<(const optional<T>&, const T&);
  template <class T> constexpr bool operator<(const T&, const optional<T>&);
  template <class T> constexpr bool operator<=(const optional<T>&, const T&);
  template <class T> constexpr bool operator<=(const T&, const optional<T>&);
  template <class T> constexpr bool operator>(const optional<T>&, const T&);
  template <class T> constexpr bool operator>(const T&, const optional<T>&);
  template <class T> constexpr bool operator>=(const optional<T>&, const T&);
  template <class T> constexpr bool operator>=(const T&, const optional<T>&);

  //Specialized algorithms
  template <class T> void swap(optional<T>&, optional<T>&) noexcept(see below);
  template <class T> constexpr optional<see below> make_optional(T&&);

  // Hash support
  template <class T> struct hash;
  template <class T> struct hash<experimental::optional<T>>;

} // namespace std