|
|
@@ -24,9 +24,11 @@ public:
|
|
|
using const_reference = element_type const &;
|
|
|
|
|
|
const_propogating_ptr() noexcept : _ptr() {}
|
|
|
- const_propogating_ptr(P const & p) noexcept(detail::is_nt_cc<P>::value)
|
|
|
+ const_propogating_ptr(P const & p) noexcept(
|
|
|
+ std::is_nothrow_copy_constructible<P>::value)
|
|
|
: _ptr(p) {}
|
|
|
- const_propogating_ptr(P && p) noexcept(detail::is_nt_mc<P>::value)
|
|
|
+ const_propogating_ptr(P && p) noexcept(
|
|
|
+ std::is_nothrow_move_constructible<P>::value)
|
|
|
: _ptr(std::move(p)) {}
|
|
|
template <typename Y, typename = typename std::enable_if<
|
|
|
std::is_constructible<P, Y>::value>::type>
|
|
|
@@ -36,25 +38,25 @@ public:
|
|
|
const_propogating_ptr(Y && p) : _ptr(std::forward<Y>(p)) {}
|
|
|
|
|
|
const_propogating_ptr(const_propogating_ptr &) noexcept(
|
|
|
- detail::is_nt_cc<P>::value) = default;
|
|
|
+ std::is_nothrow_copy_constructible<P>::value) = default;
|
|
|
const_propogating_ptr(const_propogating_ptr &&) noexcept(
|
|
|
- detail::is_nt_mc<P>::value) = default;
|
|
|
+ std::is_nothrow_move_constructible<P>::value) = default;
|
|
|
const_propogating_ptr(const_propogating_ptr const &) = delete;
|
|
|
const_propogating_ptr & operator=(const_propogating_ptr &) noexcept(
|
|
|
- detail::is_nt_ca<P>::value) = default;
|
|
|
+ std::is_nothrow_copy_assignable<P>::value) = default;
|
|
|
const_propogating_ptr & operator=(const_propogating_ptr &&) noexcept(
|
|
|
- detail::is_nt_ma<P>::value) = default;
|
|
|
+ std::is_nothrow_move_assignable<P>::value) = default;
|
|
|
const_propogating_ptr & operator=(const_propogating_ptr const &) = delete;
|
|
|
|
|
|
template <typename Y>
|
|
|
explicit operator const_propogating_ptr<Y>() &
|
|
|
- noexcept(detail::is_nt_c<P, Y>::value) {
|
|
|
+ noexcept(std::is_nothrow_constructible<P, Y>::value) {
|
|
|
return _ptr;
|
|
|
}
|
|
|
|
|
|
template <typename Y>
|
|
|
explicit operator const_ptr<Y>() const
|
|
|
- noexcept(detail::is_nt_c<P, Y>::value) {
|
|
|
+ noexcept(std::is_nothrow_constructible<P, Y>::value) {
|
|
|
return _ptr;
|
|
|
}
|
|
|
|