std::experimental::fundamentals_v2::propagate_const< _Tp > Class Template Reference
Technical Specifications » Library Fundamentals TS » Const-propagating wrapper

`#include <propagate_const>`

## Public Types

typedef remove_reference_t< decltype(*std::declval< _Tp & >())> | element_type

## Public Member Functions

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)
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)
| 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 && >, __not_< is_convertible< _Up &&, _Tp > > >::value, bool >::type = false>
constexpr | propagate_const (propagate_const< _Up > &&__pu)
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)
constexpr element_type * | get ()
constexpr const element_type * | get () const
constexpr | operator bool () const
template<typename _Up = _Tp, typename enable_if< __or_< is_pointer< _Up >, is_convertible< _Up, const element_type * > >::value, bool >::type = true>
constexpr | operator const element_type * () const
template<typename _Up = _Tp, typename enable_if< __or_< is_pointer< _Up >, is_convertible< _Up, const element_type * > >::value, bool >::type = true>
constexpr | operator element_type * ()
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_const & | operator= (_Up &&__u)
propagate_const & | operator= (const propagate_const &__p)=delete
constexpr propagate_const & | operator= (propagate_const &&__p)=default
template<typename _Up, typename = typename enable_if<is_convertible<_Up&&, _Tp>::value>::type>
constexpr propagate_const & | operator= (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 64 of file propagate_const.

## Member Typedef Documentation

## element_type

template<typename _Tp>

typedef remove_reference_t<decltype(*std::declval<_Tp&>())> std::experimental::fundamentals_v2::propagate_const< _Tp >::element_type

Definition at line 67 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>

std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const | ( | propagate_const< _Up > && | __pu | ) |

inline constexpr

Definition at line 121 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>

std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const | ( | propagate_const< _Up > && | __pu | ) |

inline explicit constexpr

Definition at line 129 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>

std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const | ( | _Up && | __u | ) |

inline constexpr

Definition at line 139 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>

std::experimental::fundamentals_v2::propagate_const< _Tp >::propagate_const | ( | _Up && | __u | ) |

inline explicit constexpr

Definition at line 149 of file propagate_const.

## Member Function Documentation

## get() [1/2]

template<typename _Tp>

element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::get | ( |  | ) |

inline constexpr

Definition at line 228 of file propagate_const.

## get() [2/2]

template<typename _Tp>

const element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::get | ( |  | ) | const

inline constexpr

Definition at line 202 of file propagate_const.

## operator bool()

template<typename _Tp>

std::experimental::fundamentals_v2::propagate_const< _Tp >::operator bool | ( |  | ) | const

inline explicit constexpr

Definition at line 177 of file propagate_const.

## operator const element_type *()

template<typename _Tp>
template<typename _Up = _Tp, typename enable_if< __or_< is_pointer< _Up >, is_convertible< _Up, const element_type * > >::value, bool >::type = true>

std::experimental::fundamentals_v2::propagate_const< _Tp >::operator const element_type * | ( |  | ) | const

inline constexpr

Definition at line 192 of file propagate_const.

## operator element_type *()

template<typename _Tp>
template<typename _Up = _Tp, typename enable_if< __or_< is_pointer< _Up >, is_convertible< _Up, const element_type * > >::value, bool >::type = true>

std::experimental::fundamentals_v2::propagate_const< _Tp >::operator element_type * | ( |  | ) |

inline constexpr

Definition at line 218 of file propagate_const.

## operator*() [1/2]

template<typename _Tp>

element_type & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator* | ( |  | ) |

inline constexpr

Definition at line 223 of file propagate_const.

## operator*() [2/2]

template<typename _Tp>

const element_type & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator* | ( |  | ) | const

inline constexpr

Definition at line 197 of file propagate_const.

## operator->() [1/2]

template<typename _Tp>

element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::operator-> | ( |  | ) |

inline constexpr

Definition at line 208 of file propagate_const.

## operator->() [2/2]

template<typename _Tp>

const element_type * std::experimental::fundamentals_v2::propagate_const< _Tp >::operator-> | ( |  | ) | const

inline constexpr

Definition at line 182 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>

propagate_const & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator= | ( | _Up && | __u | ) |

inline constexpr

Definition at line 170 of file propagate_const.

## operator=() [2/2]

template<typename _Tp>
template<typename _Up, typename = typename enable_if<is_convertible<_Up&&, _Tp>::value>::type>

propagate_const & std::experimental::fundamentals_v2::propagate_const< _Tp >::operator= | ( | propagate_const< _Up > && | __pu | ) |

inline constexpr

Definition at line 159 of file propagate_const.

## swap()

template<typename _Tp>

void std::experimental::fundamentals_v2::propagate_const< _Tp >::swap | ( | propagate_const< _Tp > & | __pt | ) |

inline constexpr noexcept

Definition at line 235 of file propagate_const.

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

- propagate_const