NIM 跨平台 C++ SDK
载入中...
搜索中...
未找到
phmap::optional< T > 模板类 参考

#include <phmap_base.h>

类 phmap::optional< T > 继承关系图:
phmap::optional_internal::optional_data< T, unused > phmap::optional_internal::optional_ctor_base< optional_internal::get_ctor_copy_traits< T >()> phmap::optional_internal::optional_assign_base< optional_internal::get_assign_copy_traits< T >()>

Public 类型

typedef T value_type
 

Public 成员函数

constexpr optional () noexcept
 
constexpr optional (nullopt_t) noexcept
 
 optional (const optional &src)=default
 
 optional (optional &&src)=default
 
template<typename InPlaceT , typename... Args, phmap::enable_if_t< phmap::conjunction< std::is_same< InPlaceT, in_place_t >, std::is_constructible< T, Args &&... > >::value > * = nullptr>
constexpr optional (InPlaceT, Args &&... args)
 
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type>
constexpr optional (in_place_t, std::initializer_list< U > il, Args &&... args)
 
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, std::is_convertible< U &&, T >, std::is_constructible< T, U && > >::value, bool >::type = false>
constexpr optional (U &&v)
 
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, phmap::negation< std::is_convertible< U &&, T > >, std::is_constructible< T, U && > >::value, bool >::type = false>
constexpr optional (U &&v)
 
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< const U &, T > >::value, bool >::type = false>
 optional (const optional< U > &rhs)
 
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< const U &, T > > >::value, bool >::type = false>
 optional (const optional< U > &rhs)
 
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< U &&, T > >::value, bool >::type = false>
 optional (optional< U > &&rhs)
 
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< U &&, T > > >::value, bool >::type = false>
 optional (optional< U > &&rhs)
 
 ~optional ()=default
 
optionaloperator= (nullopt_t) noexcept
 
optionaloperator= (const optional &src)=default
 
optionaloperator= (optional &&src)=default
 
template<typename U = T, typename = typename std::enable_if<phmap::conjunction< phmap::negation< std::is_same<optional<T>, typename std::decay<U>::type>>, phmap::negation< phmap::conjunction<std::is_scalar<T>, std::is_same<T, typename std::decay<U>::type>>>, std::is_constructible<T, U>, std::is_assignable<T&, U>>::value>::type>
optionaloperator= (U &&v)
 
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, const U&>, std::is_assignable<T&, const U&>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type>
optionaloperator= (const optional< U > &rhs)
 
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, U>, std::is_assignable<T&, U>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type>
optionaloperator= (optional< U > &&rhs)
 
PHMAP_ATTRIBUTE_REINITIALIZES void reset () noexcept
 
template<typename... Args, typename = typename std::enable_if< std::is_constructible<T, Args&&...>::value>::type>
T & emplace (Args &&... args)
 
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type>
T & emplace (std::initializer_list< U > il, Args &&... args)
 
void swap (optional &rhs) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_trivial< T >::value)
 
const T * operator-> () const
 
T * operator-> ()
 
constexpr const T & operator* () const &
 
T & operator* () &
 
constexpr const T && operator* () const &&
 
T && operator* () &&
 
constexpr operator bool () const noexcept
 
constexpr bool has_value () const noexcept
 
constexpr const T & value () const &
 
T & value () &
 
T && value () &&
 
constexpr const T && value () const &&
 
template<typename U >
constexpr T value_or (U &&v) const &
 
template<typename U >
value_or (U &&v) &&
 

Private 类型

using data_base = optional_internal::optional_data<T>
 

Private 成员函数

constexpr const T & reference () const
 
T & reference ()
 

成员类型定义说明

◆ data_base

template<typename T >
using phmap::optional< T >::data_base = optional_internal::optional_data<T>
private

◆ value_type

template<typename T >
typedef T phmap::optional< T >::value_type

构造及析构函数说明

◆ optional() [1/12]

template<typename T >
constexpr phmap::optional< T >::optional ( )
inlineconstexprnoexcept

◆ optional() [2/12]

template<typename T >
constexpr phmap::optional< T >::optional ( nullopt_t )
inlineconstexprnoexcept

◆ optional() [3/12]

template<typename T >
phmap::optional< T >::optional ( const optional< T > & src)
default

◆ optional() [4/12]

template<typename T >
phmap::optional< T >::optional ( optional< T > && src)
default

◆ optional() [5/12]

template<typename T >
template<typename InPlaceT , typename... Args, phmap::enable_if_t< phmap::conjunction< std::is_same< InPlaceT, in_place_t >, std::is_constructible< T, Args &&... > >::value > * = nullptr>
constexpr phmap::optional< T >::optional ( InPlaceT ,
Args &&... args )
inlineexplicitconstexpr

◆ optional() [6/12]

template<typename T >
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type>
constexpr phmap::optional< T >::optional ( in_place_t ,
std::initializer_list< U > il,
Args &&... args )
inlineexplicitconstexpr

◆ optional() [7/12]

template<typename T >
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, std::is_convertible< U &&, T >, std::is_constructible< T, U && > >::value, bool >::type = false>
constexpr phmap::optional< T >::optional ( U && v)
inlineconstexpr

◆ optional() [8/12]

template<typename T >
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, phmap::negation< std::is_convertible< U &&, T > >, std::is_constructible< T, U && > >::value, bool >::type = false>
constexpr phmap::optional< T >::optional ( U && v)
inlineexplicitconstexpr

◆ optional() [9/12]

template<typename T >
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< const U &, T > >::value, bool >::type = false>
phmap::optional< T >::optional ( const optional< U > & rhs)
inline

◆ optional() [10/12]

template<typename T >
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< const U &, T > > >::value, bool >::type = false>
phmap::optional< T >::optional ( const optional< U > & rhs)
inlineexplicit

◆ optional() [11/12]

template<typename T >
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< U &&, T > >::value, bool >::type = false>
phmap::optional< T >::optional ( optional< U > && rhs)
inline

◆ optional() [12/12]

template<typename T >
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< U &&, T > > >::value, bool >::type = false>
phmap::optional< T >::optional ( optional< U > && rhs)
inlineexplicit

◆ ~optional()

template<typename T >
phmap::optional< T >::~optional ( )
default

成员函数说明

◆ emplace() [1/2]

template<typename T >
template<typename... Args, typename = typename std::enable_if< std::is_constructible<T, Args&&...>::value>::type>
T & phmap::optional< T >::emplace ( Args &&... args)
inline

◆ emplace() [2/2]

template<typename T >
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type>
T & phmap::optional< T >::emplace ( std::initializer_list< U > il,
Args &&... args )
inline

◆ has_value()

template<typename T >
constexpr bool phmap::optional< T >::has_value ( ) const
inlineconstexprnoexcept

◆ operator bool()

template<typename T >
constexpr phmap::optional< T >::operator bool ( ) const
inlineexplicitconstexprnoexcept

◆ operator*() [1/4]

template<typename T >
T & phmap::optional< T >::operator* ( ) &
inline

◆ operator*() [2/4]

template<typename T >
T && phmap::optional< T >::operator* ( ) &&
inline

◆ operator*() [3/4]

template<typename T >
constexpr const T & phmap::optional< T >::operator* ( ) const &
inlineconstexpr

◆ operator*() [4/4]

template<typename T >
constexpr const T && phmap::optional< T >::operator* ( ) const &&
inlineconstexpr

◆ operator->() [1/2]

template<typename T >
T * phmap::optional< T >::operator-> ( )
inline

◆ operator->() [2/2]

template<typename T >
const T * phmap::optional< T >::operator-> ( ) const
inline

◆ operator=() [1/6]

template<typename T >
optional & phmap::optional< T >::operator= ( const optional< T > & src)
default

◆ operator=() [2/6]

template<typename T >
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, const U&>, std::is_assignable<T&, const U&>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type>
optional & phmap::optional< T >::operator= ( const optional< U > & rhs)
inline

◆ operator=() [3/6]

template<typename T >
optional & phmap::optional< T >::operator= ( nullopt_t )
inlinenoexcept

◆ operator=() [4/6]

template<typename T >
optional & phmap::optional< T >::operator= ( optional< T > && src)
default

◆ operator=() [5/6]

template<typename T >
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, U>, std::is_assignable<T&, U>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type>
optional & phmap::optional< T >::operator= ( optional< U > && rhs)
inline

◆ operator=() [6/6]

template<typename T >
template<typename U = T, typename = typename std::enable_if<phmap::conjunction< phmap::negation< std::is_same<optional<T>, typename std::decay<U>::type>>, phmap::negation< phmap::conjunction<std::is_scalar<T>, std::is_same<T, typename std::decay<U>::type>>>, std::is_constructible<T, U>, std::is_assignable<T&, U>>::value>::type>
optional & phmap::optional< T >::operator= ( U && v)
inline

◆ reference() [1/2]

template<typename T >
T & phmap::optional< T >::reference ( )
inlineprivate

◆ reference() [2/2]

template<typename T >
constexpr const T & phmap::optional< T >::reference ( ) const
inlineconstexprprivate

◆ reset()

template<typename T >
PHMAP_ATTRIBUTE_REINITIALIZES void phmap::optional< T >::reset ( )
inlinenoexcept

◆ swap()

template<typename T >
void phmap::optional< T >::swap ( optional< T > & rhs)
inlinenoexcept

◆ value() [1/4]

template<typename T >
T & phmap::optional< T >::value ( ) &
inline

◆ value() [2/4]

template<typename T >
T && phmap::optional< T >::value ( ) &&
inline

◆ value() [3/4]

template<typename T >
constexpr const T & phmap::optional< T >::value ( ) const &
inlineconstexpr

◆ value() [4/4]

template<typename T >
constexpr const T && phmap::optional< T >::value ( ) const &&
inlineconstexpr

◆ value_or() [1/2]

template<typename T >
template<typename U >
T phmap::optional< T >::value_or ( U && v) &&
inline

◆ value_or() [2/2]

template<typename T >
template<typename U >
constexpr T phmap::optional< T >::value_or ( U && v) const &
inlineconstexpr

该类的文档由以下文件生成: