STD::EXPERIMENTAL::PROPAGATE_CONST(3cxx)
π¦ std::experimental::propagate_const< _Tp > β 3cxx manual page π¦
okay bestie, welcome to the 3cxx page for the const-propagating wrapper π we are keeping every single detail, no cap β¨
π NAME π
std::experimental::propagate_const< _Tp > β Const-propagating wrapper. Thatβs the whole name, and it ate π
π SYNOPSIS π
Include it like this, exactly:
#include <propagate_const>
- Inherits
std::experimental::__propagate_const_conversions< _Tp >. Yes, thatβs the parent, periodt π«Ά
π¦ Public Types π¦
using element_type = __propagate_const_elem_type< _Tp >β thatβs the public type alias, character-for-character β¨
π Public Member Functions π
okay this is the big one, so buckle up π here are the exact signatures, no summarising, no skipping:
- Constructor from
_Up &&__u, convertible version β exact signature:
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)
- Constructor from
_Up &&__u, non-convertible version β exact signature:
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)
- Copy constructor β deleted, literally:
propagate_const (const propagate_const &__p)=delete
- Move constructor β defaulted, slay:
constexpr propagate_const (propagate_const &&__p)=default
- Constructor from
propagate_const< _Up > &&__pu, convertible version:
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)
- Constructor from
propagate_const< _Up > &&__pu, non-convertible version:
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)
getβ non-const:
constexpr element_type * get ()
getβ const:
constexpr const element_type * get () const
operator boolβ const:
constexpr operator bool () const
operator*β non-const:
constexpr element_type & operator* ()
operator*β const:
constexpr const element_type & operator* () const
operator->β non-const:
constexpr element_type * operator-> ()
operator->β const:
constexpr const element_type * operator-> () const
- Assignment from
_Up &&__uβ exact signature:
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)
- Copy assignment β deleted:
propagate_const & operator= (const propagate_const &__p)=delete
- Move assignment β defaulted:
constexpr propagate_const & operator= (propagate_const &&__p)=default
- Assignment from
propagate_const< _Up > &&__puβ exact signature:
template<typename _Up , typename = typename
enable_if<is_convertible<_Up&&, _Tp>::value>::type> constexpr
propagate_const & operator= (propagate_const< _Up > &&__pu)
swapβ exact signature, including thenoexceptbit:
constexpr void swap (propagate_const &__pt)
noexcept(__is_nothrow_swappable< _Tp >::value)
π«Ά Friends π«Ά
- Friend
get_underlyingβ const version, exact:
template<typename _Up > constexpr const _Up & get_underlying (const
propagate_const< _Up > &__pt) noexcept
- Friend
get_underlyingβ non-const version, exact:
template<typename _Up > constexpr _Up & get_underlying (propagate_const<
_Up > &__pt) noexcept
β¨ Detailed Description β¨
Hereβs the template-and-class moment, preserved exactly β yes, including that quote after > because we do not βfixβ the source, bestie π:
template<typename _Tp>
class std::experimental::propagate_const< _Tp >"Const-propagating
wrapper.
π Author π
Generated automatically by Doxygen for libstdc++ from the source code.
byeee bestie π this page is from libstdc++ and the 3cxx manual section, generated automatically by Doxygen from the source code, and the footer had no date on it so Iβm not inventing one β periodt β¨π«Ά
π¦ where this page comes from
- ubuntu noble: libstdc++-14-doc 14-20240412-0ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms