is_convertible<_Up&&, _Tp>>::value, bool
>::type=true>
constexpr propagate_const(propagate_const<_Up>&& __pu)
- : __t(move(get_underlying(__pu)))
+ : _M_t(std::move(get_underlying(__pu)))
{}
template <typename _Up, typename
enable_if<__and_<is_constructible<_Tp, _Up&&>,
__not_<is_convertible<_Up&&, _Tp>>>::value,
bool>::type=false>
constexpr explicit propagate_const(propagate_const<_Up>&& __pu)
- : __t(move(get_underlying(__pu)))
+ : _M_t(std::move(get_underlying(__pu)))
{}
template <typename _Up, typename
enable_if<__and_<is_constructible<_Tp, _Up&&>,
typename decay<_Up>::type>>
>::value, bool>::type=true>
constexpr propagate_const(_Up&& __u)
- : __t(forward<_Up>(__u))
+ : _M_t(std::forward<_Up>(__u))
{}
template <typename _Up, typename
enable_if<__and_<is_constructible<_Tp, _Up&&>,
typename decay<_Up>::type>>
>::value, bool>::type=false>
constexpr explicit propagate_const(_Up&& __u)
- : __t(forward<_Up>(__u))
+ : _M_t(std::forward<_Up>(__u))
{}
// [propagate_const.assignment], assignment
typename enable_if<is_convertible<_Up&&, _Tp>::value>::type>
constexpr propagate_const& operator=(propagate_const<_Up>&& __pu)
{
- __t = move(get_underlying(__pu));
+ _M_t = std::move(get_underlying(__pu));
}
template <typename _Up, typename =
>::value>::type>
constexpr propagate_const& operator=(_Up&& __u)
{
- __t = forward<_Up>(__u);
+ _M_t = std::forward<_Up>(__u);
}
// [propagate_const.const_observers], const observers
explicit constexpr operator bool() const
{
- return bool(__t);
+ return bool(_M_t);
}
constexpr const element_type* operator->() const
constexpr const element_type* get() const
{
- return __to_raw_pointer(__t);
+ return __to_raw_pointer(_M_t);
}
// [propagate_const.non_const_observers], non-const observers
constexpr element_type* get()
{
- return __to_raw_pointer(__t);
+ return __to_raw_pointer(_M_t);
}
// [propagate_const.modifiers], modifiers
swap(propagate_const& __pt) noexcept(__is_nothrow_swappable<_Tp>::value)
{
using std::swap;
- swap(__t, get_underlying(__pt));
+ swap(_M_t, get_underlying(__pt));
}
private:
- _Tp __t; //exposition only
+ _Tp _M_t;
};
// [propagate_const.relational], relational operators
constexpr const _Tp&
get_underlying(const propagate_const<_Tp>& __pt) noexcept
{
- return __pt.__t;
+ return __pt._M_t;
}
template <typename _Tp>
constexpr _Tp&
get_underlying(propagate_const<_Tp>& __pt) noexcept
{
- return __pt.__t;
+ return __pt._M_t;
}
// @} group propagate_const