实验性库头文件 <experimental/optional>
来自cppreference.com
类
| 名字 | 说明 |
(库基础 TS) |
可能或可能不保有一个对象的包装器 (类模板) |
(库基础 TS) |
指示进行了到不含值的 optional 的有检查访问的异常 (类) |
(库基础 TS) |
用于 optional 类型的就地构造的消歧义标签类型 (类) |
| 特化 std::hash 算法 (类模板特化) | |
(库基础 TS) |
带未初始化状态的 optional 类型的指示器 (类) |
函数
比较 | |
比较 optional 对象 (函数模板) | |
特化的算法 | |
| 特化 std::swap 算法 (函数) | |
创建一个 optional 对象 (函数模板) | |
散列支持 | |
概要
namespace std {
namespace experimental {
inline namespace fundamentals_v1 {
// 5.4,用于对象类型的 optional
template <class T> class optional;
// 5.5,就地构造
struct in_place_t{};
constexpr in_place_t in_place{};
// 5.6,无值状态指示器
struct nullopt_t{see below};
constexpr nullopt_t nullopt(unspecified);
// 5.7,类 bad_optional_access
class bad_optional_access;
// 5.8,关系运算符
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>&);
// 5.9,与 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;
// 5.10,与 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>&);
// 5.11,特化的算法
template <class T> void swap(optional<T>&, optional<T>&) noexcept(see below);
template <class T> constexpr optional<see below> make_optional(T&&);
} // namespace fundamentals_v1
} // namespace experimental
// 5.12,散列支持
template <class T> struct hash;
template <class T> struct hash<experimental::optional<T>>;
} // namespace std