diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index 943ab07..7050f98 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -160,15 +160,15 @@ template struct variant_alternative { }; -template struct variant_alternative: mp11::mp_defer< variant2::detail::var_alt_impl, mp11::mp_size_t, T, mp11::mp_quote_trait> +template struct variant_alternative: mp11::mp_defer, T, mp11::mp_quote_trait> { }; -template struct variant_alternative: mp11::mp_defer< variant2::detail::var_alt_impl, mp11::mp_size_t, T, mp11::mp_quote_trait> +template struct variant_alternative: mp11::mp_defer, T, mp11::mp_quote_trait> { }; -template struct variant_alternative: mp11::mp_defer< variant2::detail::var_alt_impl, mp11::mp_size_t, T, mp11::mp_quote_trait> +template struct variant_alternative: mp11::mp_defer, T, mp11::mp_quote_trait> { }; @@ -430,7 +430,7 @@ template union variant_storage_impl BOOST_CXX14_CONSTEXPR void emplace( mp11::mp_size_t, A&&... a ) { - this->emplace_impl( mp11::mp_all, variant2::detail::is_trivially_move_assignable...>(), mp11::mp_size_t(), std::forward(a)... ); + this->emplace_impl( mp11::mp_all, detail::is_trivially_move_assignable...>(), mp11::mp_size_t(), std::forward(a)... ); } BOOST_CXX14_CONSTEXPR T1& get( mp11::mp_size_t<0> ) noexcept { return first_; } @@ -570,7 +570,7 @@ template struct variant_base_impl std::size_t const J = I+1; using U = mp11::mp_at_c, I>; - this->emplace_impl( std::is_nothrow_constructible(), mp11::mp_all, variant2::detail::is_trivially_move_assignable...>(), std::forward(a)... ); + this->emplace_impl( std::is_nothrow_constructible(), mp11::mp_all, detail::is_trivially_move_assignable...>(), std::forward(a)... ); } }; @@ -940,11 +940,11 @@ template struct is_nothrow_swappable: mp11::mp_valid class variant: private variant2::detail::variant_base +template class variant: private detail::variant_base { private: - using variant_base = variant2::detail::variant_base; + using variant_base = detail::variant_base; private: @@ -963,7 +963,7 @@ public: } template...>, E1> + class E2 = mp11::mp_if...>, E1> > constexpr variant( variant const& r ) noexcept : variant_base( static_cast(r) ) @@ -986,7 +986,7 @@ private: public: template...>>, E1>, + class E2 = mp11::mp_if...>>, E1>, class E3 = mp11::mp_if...>, E1> > variant( variant const& r ) @@ -996,7 +996,7 @@ public: } template...>, E1> + class E2 = mp11::mp_if...>, E1> > constexpr variant( variant && r ) noexcept : variant_base( static_cast(r) ) @@ -1019,7 +1019,7 @@ private: public: template...>>, E1>, + class E2 = mp11::mp_if...>>, E1>, class E3 = mp11::mp_if...>, E1> > variant( variant && r ) @@ -1030,13 +1030,13 @@ public: template::type, - class E1 = typename std::enable_if< !std::is_same::value && !variant2::detail::is_in_place_index::value && !variant2::detail::is_in_place_type::value >::type, - class V = variant2::detail::resolve_overload_type, + class E1 = typename std::enable_if< !std::is_same::value && !detail::is_in_place_index::value && !detail::is_in_place_type::value >::type, + class V = detail::resolve_overload_type, class E2 = typename std::enable_if::value>::type > constexpr variant( U&& u ) noexcept( std::is_nothrow_constructible::value ) - : variant_base( variant2::detail::resolve_overload_index(), std::forward(u) ) + : variant_base( detail::resolve_overload_index(), std::forward(u) ) { } @@ -1062,7 +1062,7 @@ public: // assignment template..., variant2::detail::is_trivially_copy_assignable...>, E1> + class E2 = mp11::mp_if..., detail::is_trivially_copy_assignable...>, E1> > BOOST_CXX14_CONSTEXPR variant& operator=( variant const & r ) noexcept { @@ -1093,7 +1093,7 @@ private: public: template..., variant2::detail::is_trivially_copy_assignable...>>, E1>, + class E2 = mp11::mp_if..., detail::is_trivially_copy_assignable...>>, E1>, class E3 = mp11::mp_if..., std::is_copy_assignable...>, E1> > BOOST_CXX14_CONSTEXPR variant& operator=( variant const & r ) @@ -1104,7 +1104,7 @@ public: } template..., variant2::detail::is_trivially_move_assignable...>, E1> + class E2 = mp11::mp_if..., detail::is_trivially_move_assignable...>, E1> > BOOST_CXX14_CONSTEXPR variant& operator=( variant && r ) noexcept { @@ -1135,7 +1135,7 @@ private: public: template..., variant2::detail::is_trivially_move_assignable...>>, E1>, + class E2 = mp11::mp_if..., detail::is_trivially_move_assignable...>>, E1>, class E3 = mp11::mp_if..., std::is_move_assignable...>, E1> > variant& operator=( variant && r ) @@ -1147,13 +1147,13 @@ public: template::type, variant>::value>::type, - class V = variant2::detail::resolve_overload_type, + class V = detail::resolve_overload_type, class E2 = typename std::enable_if::value && std::is_constructible::value>::type > BOOST_CXX14_CONSTEXPR variant& operator=( U&& u ) noexcept( std::is_nothrow_assignable::value && std::is_nothrow_constructible::value ) { - std::size_t const I = variant2::detail::resolve_overload_index::value; + std::size_t const I = detail::resolve_overload_index::value; if( index() == I ) { @@ -1223,7 +1223,7 @@ private: public: - void swap( variant& r ) noexcept( mp11::mp_all..., variant2::detail::is_nothrow_swappable...>::value ) + void swap( variant& r ) noexcept( mp11::mp_all..., detail::is_nothrow_swappable...>::value ) { if( index() == r.index() ) { @@ -1560,9 +1560,9 @@ template struct visit_L1 } // namespace detail -template constexpr auto visit( F&& f, V1&& v1 ) -> variant2::detail::Vret +template constexpr auto visit( F&& f, V1&& v1 ) -> detail::Vret { - return mp11::mp_with_index>( v1.index(), detail::visit_L1{ std::forward(f), std::forward(v1) } ); + return mp11::mp_with_index>( v1.index(), detail::visit_L1{ std::forward(f), std::forward(v1) } ); } #if defined(BOOST_NO_CXX14_GENERIC_LAMBDAS) || BOOST_WORKAROUND( BOOST_MSVC, < 1920 ) @@ -1602,9 +1602,9 @@ template struct visit_L2 } // namespace detail -template constexpr auto visit( F&& f, V1&& v1, V2&& v2 ) -> variant2::detail::Vret +template constexpr auto visit( F&& f, V1&& v1, V2&& v2 ) -> detail::Vret { - return mp11::mp_with_index>( v1.index(), detail::visit_L2{ std::forward(f), std::forward(v1), std::forward(v2) } ); + return mp11::mp_with_index>( v1.index(), detail::visit_L2{ std::forward(f), std::forward(v1), std::forward(v2) } ); } namespace detail @@ -1627,9 +1627,9 @@ template struct visit_L3 } // namespace detail -template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3 ) -> variant2::detail::Vret +template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3 ) -> detail::Vret { - return mp11::mp_with_index>( v1.index(), detail::visit_L3{ std::forward(f), std::forward(v1), std::forward(v2), std::forward(v3) } ); + return mp11::mp_with_index>( v1.index(), detail::visit_L3{ std::forward(f), std::forward(v1), std::forward(v2), std::forward(v3) } ); } namespace detail @@ -1653,16 +1653,16 @@ template struct visit_L4 } // namespace detail -template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3, V4&& v4 ) -> variant2::detail::Vret +template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3, V4&& v4 ) -> detail::Vret { - return mp11::mp_with_index>( v1.index(), detail::visit_L4{ std::forward(f), std::forward(v1), std::forward(v2), std::forward(v3), std::forward(v4) } ); + return mp11::mp_with_index>( v1.index(), detail::visit_L4{ std::forward(f), std::forward(v1), std::forward(v2), std::forward(v3), std::forward(v4) } ); } #else -template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V&&... v ) -> variant2::detail::Vret +template constexpr auto visit( F&& f, V1&& v1, V2&& v2, V&&... v ) -> detail::Vret { - return mp11::mp_with_index>( v1.index(), [&]( auto I ){ + return mp11::mp_with_index>( v1.index(), [&]( auto I ){ auto f2 = [&]( auto&&... a ){ return std::forward(f)( get( std::forward(v1) ), std::forward(a)... ); }; return visit( f2, std::forward(v2), std::forward(v)... ); @@ -1674,7 +1674,7 @@ template constexpr auto visit( F&& f, V // specialized algorithms template..., variant2::detail::is_swappable...>::value>::type> + class E = typename std::enable_if..., detail::is_swappable...>::value>::type> void swap( variant & v, variant & w ) noexcept( noexcept(v.swap(w)) ) {