libstdc++
std::experimental::fundamentals_v2::propagate_const< _Tp > Class Template Reference

#include <propagate_const>

Inherits std::experimental::fundamentals_v2::__propagate_const_conversions< _Tp >.

Public Types

using element_type = __propagate_const_elem_type< _Tp >
 

Public Member Functions

template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp >, __not_< __is_propagate_const< typename decay< _Up >::type > > >::value, bool >::type = true>
constexpr propagate_const (_Up &&__u)
 
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, __not_< is_convertible< _Up &&, _Tp > >, __not_< __is_propagate_const< typename decay< _Up >::type > > >::value, bool >::type = false>
constexpr propagate_const (_Up &&__u)
 
 propagate_const (const propagate_const &__p)=delete
 
constexpr propagate_const (propagate_const &&__p)=default
 
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp > >::value, bool >::type = true>
constexpr propagate_const (propagate_const< _Up > &&__pu)
 
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, __not_< is_convertible< _Up &&, _Tp > > >::value, bool >::type = false>
constexpr propagate_const (propagate_const< _Up > &&__pu)
 
constexpr element_type * get ()
 
constexpr const element_type * get () const
 
constexpr operator bool () const
 
constexpr element_type & operator* ()
 
constexpr const element_type & operator* () const
 
constexpr element_type * operator-> ()
 
constexpr const element_type * operator-> () const
 
template<typename _Up , typename = typename enable_if<__and_<is_convertible<_Up&&, _Tp>, __not_<__is_propagate_const< typename decay<_Up>::type>> >::value>::type>
constexpr propagate_constoperator= (_Up &&__u)
 
propagate_constoperator= (const propagate_const &__p)=delete
 
constexpr propagate_constoperator= (propagate_const &&__p)=default
 
template<typename _Up , typename = typename enable_if<is_convertible<_Up&&, _Tp>::value>::type>
constexpr propagate_constoperator= (propagate_const< _Up > &&__pu)
 
constexpr void swap (propagate_const &__pt) noexcept(__is_nothrow_swappable< _Tp >::value)
 

Friends

template<typename _Up >
constexpr const _Up & get_underlying (const propagate_const< _Up > &__pt) noexcept
 
template<typename _Up >
constexpr _Up & get_underlying (propagate_const< _Up > &__pt) noexcept
 

Detailed Description

template<typename _Tp>
class std::experimental::fundamentals_v2::propagate_const< _Tp >

Const-propagating wrapper.

Definition at line 108 of file propagate_const.

Member Typedef Documentation

◆ element_type

template<typename _Tp >
using std::experimental::fundamentals_v2::propagate_const< _Tp >::element_type = __propagate_const_elem_type<_Tp>

Definition at line 111 of file propagate_const.

Constructor & Destructor Documentation

◆ propagate_const() [1/4]

template<typename _Tp >
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp > >::value, bool >::type = true>
constexpr std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const ( propagate_const< _Up > &&  __pu)
inlineconstexpr

Definition at line 165 of file propagate_const.

◆ propagate_const() [2/4]

template<typename _Tp >
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, __not_< is_convertible< _Up &&, _Tp > > >::value, bool >::type = false>
constexpr std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const ( propagate_const< _Up > &&  __pu)
inlineexplicitconstexpr

Definition at line 173 of file propagate_const.

◆ propagate_const() [3/4]

template<typename _Tp >
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp >, __not_< __is_propagate_const< typename decay< _Up >::type > > >::value, bool >::type = true>
constexpr std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const ( _Up &&  __u)
inlineconstexpr

Definition at line 183 of file propagate_const.

◆ propagate_const() [4/4]

template<typename _Tp >
template<typename _Up , typename enable_if< __and_< is_constructible< _Tp, _Up && >, __not_< is_convertible< _Up &&, _Tp > >, __not_< __is_propagate_const< typename decay< _Up >::type > > >::value, bool >::type = false>
constexpr std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const ( _Up &&  __u)
inlineexplicitconstexpr

Definition at line 193 of file propagate_const.

Member Function Documentation

◆ get() [1/2]

template<typename _Tp >
constexpr element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::get ( )
inlineconstexpr

Definition at line 252 of file propagate_const.

◆ get() [2/2]

template<typename _Tp >
constexpr const element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::get ( ) const
inlineconstexpr

Definition at line 236 of file propagate_const.

◆ operator bool()

template<typename _Tp >
constexpr std::experimental::fundamentals_v2::propagate_const< _Tp >::operator bool ( ) const
inlineexplicitconstexpr

Definition at line 221 of file propagate_const.

◆ operator*() [1/2]

template<typename _Tp >
constexpr element_type & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator* ( )
inlineconstexpr

Definition at line 247 of file propagate_const.

◆ operator*() [2/2]

template<typename _Tp >
constexpr const element_type & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator* ( ) const
inlineconstexpr

Definition at line 231 of file propagate_const.

◆ operator->() [1/2]

template<typename _Tp >
constexpr element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::operator-> ( )
inlineconstexpr

Definition at line 242 of file propagate_const.

◆ operator->() [2/2]

template<typename _Tp >
constexpr const element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::operator-> ( ) const
inlineconstexpr

Definition at line 226 of file propagate_const.

◆ operator=() [1/2]

template<typename _Tp >
template<typename _Up , typename = typename enable_if<__and_<is_convertible<_Up&&, _Tp>, __not_<__is_propagate_const< typename decay<_Up>::type>> >::value>::type>
constexpr propagate_const & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator= ( _Up &&  __u)
inlineconstexpr

Definition at line 214 of file propagate_const.

◆ operator=() [2/2]

template<typename _Tp >
template<typename _Up , typename = typename enable_if<is_convertible<_Up&&, _Tp>::value>::type>
constexpr propagate_const & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator= ( propagate_const< _Up > &&  __pu)
inlineconstexpr

Definition at line 203 of file propagate_const.

◆ swap()

template<typename _Tp >
constexpr void std::experimental::fundamentals_v2::propagate_const< _Tp >::swap ( propagate_const< _Tp > &  __pt)
inlineconstexprnoexcept

Definition at line 259 of file propagate_const.


The documentation for this class was generated from the following file: