|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<class T, class TT> |
|
|
template<class T, class TT> |
|
|
using is_ntmocp_constructible = std::conditional_t<std::is_reference<TT>::value || !std::is_nothrow_move_constructible<TT>::value, |
|
|
using is_ntmocp_constructible = std::conditional_t<std::is_reference<TT>::value || !std::is_nothrow_move_constructible<TT>::value, |
|
|
typename std::is_constructible<T, TT const &>::type, |
|
|
|
|
|
|
|
|
typename std::is_constructible<T, const TT&>::type, |
|
|
typename std::is_constructible<T, TT>::type>; |
|
|
typename std::is_constructible<T, TT>::type>; |
|
|
|
|
|
|
|
|
template<class T, class TT> |
|
|
template<class T, class TT> |
|
|
|
|
|
|
|
|
template<class T, |
|
|
template<class T, |
|
|
class U = std::conditional_t<(!std::is_nothrow_move_assignable<T>::value |
|
|
class U = std::conditional_t<(!std::is_nothrow_move_assignable<T>::value |
|
|
&& std::is_copy_assignable<T>::value), |
|
|
&& std::is_copy_assignable<T>::value), |
|
|
T const &, |
|
|
|
|
|
|
|
|
const T&, |
|
|
T &&>> |
|
|
T &&>> |
|
|
constexpr U move_assign_if_noexcept(T& value) noexcept |
|
|
constexpr U move_assign_if_noexcept(T& value) noexcept |
|
|
{ |
|
|
{ |