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 | {{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
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) |
(C++17) |
exception indicating checked access to an optional that doesn't contain a value (class) |
(C++17) |
hash support for std::optional (class template specialization) |
(C++17) |
indicator of an std::optional that does not contain a value (class) |
Functions
Comparison | |
(C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20) |
compares optional objects (function template) |
Specialized algorithms | |
(C++17) |
specializes the std::swap algorithm (function template) |
(C++17) |
creates an optional object (function template) |
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