|
template<typename Other , typename = meta::if_<can_convert<Other>>> |
tagged & | operator= (tagged< Other, Tags... > &&that) noexcept(noexcept(std::declval< Base &>()=static_cast< Other &&>(that))) |
|
template<typename Other , typename = meta::if_<can_convert<Other>>> |
tagged & | operator= (tagged< Other, Tags... > const &that) noexcept(noexcept(std::declval< Base &>()=static_cast< Other const &>(that))) |
|
template<typename U , typename = meta::if_c<!std::is_same<tagged, detail::decay_t<U>>::value>, typename = decltype(std::declval<Base &>() = std::declval<U>())> |
tagged & | operator= (U &&u) noexcept(noexcept(std::declval< Base &>()=static_cast< U &&>(u))) |
|
template<typename B = Base> |
meta::if_c< is_swappable< B >::value > | swap (tagged &that) noexcept(is_nothrow_swappable< B >::value) |
|
constexpr | tagged (Base &&that) noexcept(std::is_nothrow_move_constructible< Base >::value) |
|
constexpr | tagged (Base const &that) noexcept(std::is_nothrow_copy_constructible< Base >::value) |
|
template<typename Other , typename = meta::if_<can_convert<Other>>> |
constexpr | tagged (tagged< Other, Tags... > &&that) noexcept(std::is_nothrow_constructible< Base, Other >::value) |
|
template<typename Other , typename = meta::if_<can_convert<Other>>> |
constexpr | tagged (tagged< Other, Tags... > const &that) noexcept(std::is_nothrow_constructible< Base, Other const &>::value) |
|