forked from boostorg/variant2
Rename mp_for_index to mp_with_index
This commit is contained in:
@@ -551,7 +551,7 @@ template<class... T> struct variant_base_impl<false, true, T...>
|
|||||||
{
|
{
|
||||||
if( ix_ > 0 )
|
if( ix_ > 0 )
|
||||||
{
|
{
|
||||||
mp_for_index<1 + sizeof...(T)>( ix_, [&]( auto I ){
|
mp_with_index<1 + sizeof...(T)>( ix_, [&]( auto I ){
|
||||||
|
|
||||||
using U = mp_at_c<mp_list<none, T...>, I>;
|
using U = mp_at_c<mp_list<none, T...>, I>;
|
||||||
st1_.get( I ).~U();
|
st1_.get( I ).~U();
|
||||||
@@ -653,7 +653,7 @@ template<class... T> struct variant_base_impl<false, false, T...>
|
|||||||
{
|
{
|
||||||
if( ix_ > 0 )
|
if( ix_ > 0 )
|
||||||
{
|
{
|
||||||
mp_for_index<1 + sizeof...(T)>( ix_, [&]( auto I ){
|
mp_with_index<1 + sizeof...(T)>( ix_, [&]( auto I ){
|
||||||
|
|
||||||
using U = mp_at_c<mp_list<none, T...>, I>;
|
using U = mp_at_c<mp_list<none, T...>, I>;
|
||||||
st1_.get( I ).~U();
|
st1_.get( I ).~U();
|
||||||
@@ -662,7 +662,7 @@ template<class... T> struct variant_base_impl<false, false, T...>
|
|||||||
}
|
}
|
||||||
else if( ix_ < 0 )
|
else if( ix_ < 0 )
|
||||||
{
|
{
|
||||||
mp_for_index<1 + sizeof...(T)>( -ix_, [&]( auto I ){
|
mp_with_index<1 + sizeof...(T)>( -ix_, [&]( auto I ){
|
||||||
|
|
||||||
using U = mp_at_c<mp_list<none, T...>, I>;
|
using U = mp_at_c<mp_list<none, T...>, I>;
|
||||||
st2_.get( I ).~U();
|
st2_.get( I ).~U();
|
||||||
@@ -833,7 +833,7 @@ public:
|
|||||||
variant( variant const& r )
|
variant( variant const& r )
|
||||||
noexcept( mp_all<std::is_nothrow_copy_constructible<T>...>::value )
|
noexcept( mp_all<std::is_nothrow_copy_constructible<T>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
::new( static_cast<variant_base*>(this) ) variant_base( I, r._get_impl( I ) );
|
::new( static_cast<variant_base*>(this) ) variant_base( I, r._get_impl( I ) );
|
||||||
|
|
||||||
@@ -844,7 +844,7 @@ public:
|
|||||||
variant( variant && r )
|
variant( variant && r )
|
||||||
noexcept( mp_all<std::is_nothrow_move_constructible<T>...>::value )
|
noexcept( mp_all<std::is_nothrow_move_constructible<T>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
::new( static_cast<variant_base*>(this) ) variant_base( I, std::move( r._get_impl( I ) ) );
|
::new( static_cast<variant_base*>(this) ) variant_base( I, std::move( r._get_impl( I ) ) );
|
||||||
|
|
||||||
@@ -888,7 +888,7 @@ public:
|
|||||||
variant& operator=( variant const & r )
|
variant& operator=( variant const & r )
|
||||||
noexcept( mp_all<std::is_nothrow_copy_constructible<T>..., std::is_nothrow_copy_assignable<T>...>::value )
|
noexcept( mp_all<std::is_nothrow_copy_constructible<T>..., std::is_nothrow_copy_assignable<T>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
if( this->index() == I )
|
if( this->index() == I )
|
||||||
{
|
{
|
||||||
@@ -908,7 +908,7 @@ public:
|
|||||||
variant& operator=( variant && r )
|
variant& operator=( variant && r )
|
||||||
noexcept( mp_all<std::is_nothrow_move_constructible<T>..., std::is_nothrow_move_assignable<T>...>::value )
|
noexcept( mp_all<std::is_nothrow_move_constructible<T>..., std::is_nothrow_move_assignable<T>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(T)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
if( this->index() == I )
|
if( this->index() == I )
|
||||||
{
|
{
|
||||||
@@ -986,7 +986,7 @@ public:
|
|||||||
{
|
{
|
||||||
if( index() == r.index() )
|
if( index() == r.index() )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(T)>( index(), [&]( auto I ){
|
mp_with_index<sizeof...(T)>( index(), [&]( auto I ){
|
||||||
|
|
||||||
using std::swap;
|
using std::swap;
|
||||||
swap( this->_get_impl( I ), r._get_impl( I ) );
|
swap( this->_get_impl( I ), r._get_impl( I ) );
|
||||||
@@ -1017,7 +1017,7 @@ public:
|
|||||||
variant( variant<U...> const& r )
|
variant( variant<U...> const& r )
|
||||||
noexcept( mp_all<std::is_nothrow_copy_constructible<U>...>::value )
|
noexcept( mp_all<std::is_nothrow_copy_constructible<U>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(U)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(U)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<T...>, mp_at_c<mp_list<U...>, I>>;
|
using J = mp_find<mp_list<T...>, mp_at_c<mp_list<U...>, I>>;
|
||||||
|
|
||||||
@@ -1031,7 +1031,7 @@ public:
|
|||||||
variant( variant<U...> && r )
|
variant( variant<U...> && r )
|
||||||
noexcept( mp_all<std::is_nothrow_move_constructible<U>...>::value )
|
noexcept( mp_all<std::is_nothrow_move_constructible<U>...>::value )
|
||||||
{
|
{
|
||||||
mp_for_index<sizeof...(U)>( r.index(), [&]( auto I ){
|
mp_with_index<sizeof...(U)>( r.index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<T...>, mp_at_c<mp_list<U...>, I>>;
|
using J = mp_find<mp_list<T...>, mp_at_c<mp_list<U...>, I>>;
|
||||||
|
|
||||||
@@ -1060,7 +1060,7 @@ public:
|
|||||||
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
||||||
constexpr variant<U...> subset() &
|
constexpr variant<U...> subset() &
|
||||||
{
|
{
|
||||||
return mp_for_index<sizeof...(T)>( index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
||||||
|
|
||||||
@@ -1073,7 +1073,7 @@ public:
|
|||||||
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
||||||
constexpr variant<U...> subset() const&
|
constexpr variant<U...> subset() const&
|
||||||
{
|
{
|
||||||
return mp_for_index<sizeof...(T)>( index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
||||||
|
|
||||||
@@ -1086,7 +1086,7 @@ public:
|
|||||||
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
||||||
constexpr variant<U...> subset() &&
|
constexpr variant<U...> subset() &&
|
||||||
{
|
{
|
||||||
return mp_for_index<sizeof...(T)>( index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
||||||
|
|
||||||
@@ -1099,7 +1099,7 @@ public:
|
|||||||
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
class E2 = mp_if<mp_all<std::is_copy_constructible<U>..., mp_contains<mp_list<T...>, U>...>, void> >
|
||||||
constexpr variant<U...> subset() const&&
|
constexpr variant<U...> subset() const&&
|
||||||
{
|
{
|
||||||
return mp_for_index<sizeof...(T)>( index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( index(), [&]( auto I ){
|
||||||
|
|
||||||
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
using J = mp_find<mp_list<U...>, mp_at_c<mp_list<T...>, I>>;
|
||||||
|
|
||||||
@@ -1114,7 +1114,7 @@ template<class... T> constexpr bool operator==( variant<T...> const & v, variant
|
|||||||
{
|
{
|
||||||
if( v.index() != w.index() ) return false;
|
if( v.index() != w.index() ) return false;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) == w._get_impl( I );
|
return v._get_impl( I ) == w._get_impl( I );
|
||||||
|
|
||||||
@@ -1125,7 +1125,7 @@ template<class... T> constexpr bool operator!=( variant<T...> const & v, variant
|
|||||||
{
|
{
|
||||||
if( v.index() != w.index() ) return true;
|
if( v.index() != w.index() ) return true;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) != w._get_impl( I );
|
return v._get_impl( I ) != w._get_impl( I );
|
||||||
|
|
||||||
@@ -1137,7 +1137,7 @@ template<class... T> constexpr bool operator<( variant<T...> const & v, variant<
|
|||||||
if( v.index() < w.index() ) return true;
|
if( v.index() < w.index() ) return true;
|
||||||
if( v.index() > w.index() ) return false;
|
if( v.index() > w.index() ) return false;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) < w._get_impl( I );
|
return v._get_impl( I ) < w._get_impl( I );
|
||||||
|
|
||||||
@@ -1149,7 +1149,7 @@ template<class... T> constexpr bool operator>( variant<T...> const & v, variant
|
|||||||
if( v.index() > w.index() ) return true;
|
if( v.index() > w.index() ) return true;
|
||||||
if( v.index() < w.index() ) return false;
|
if( v.index() < w.index() ) return false;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) > w._get_impl( I );
|
return v._get_impl( I ) > w._get_impl( I );
|
||||||
|
|
||||||
@@ -1161,7 +1161,7 @@ template<class... T> constexpr bool operator<=( variant<T...> const & v, variant
|
|||||||
if( v.index() < w.index() ) return true;
|
if( v.index() < w.index() ) return true;
|
||||||
if( v.index() > w.index() ) return false;
|
if( v.index() > w.index() ) return false;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) <= w._get_impl( I );
|
return v._get_impl( I ) <= w._get_impl( I );
|
||||||
|
|
||||||
@@ -1173,7 +1173,7 @@ template<class... T> constexpr bool operator>=( variant<T...> const & v, variant
|
|||||||
if( v.index() > w.index() ) return true;
|
if( v.index() > w.index() ) return true;
|
||||||
if( v.index() < w.index() ) return false;
|
if( v.index() < w.index() ) return false;
|
||||||
|
|
||||||
return mp_for_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
return mp_with_index<sizeof...(T)>( v.index(), [&]( auto I ){
|
||||||
|
|
||||||
return v._get_impl( I ) >= w._get_impl( I );
|
return v._get_impl( I ) >= w._get_impl( I );
|
||||||
|
|
||||||
@@ -1225,7 +1225,7 @@ template<class F> constexpr auto visit( F&& f ) -> decltype(std::forward<F>(f)()
|
|||||||
|
|
||||||
template<class F, class V1> constexpr auto visit( F&& f, V1&& v1 ) -> variant2::detail::Vret<F, V1>
|
template<class F, class V1> constexpr auto visit( F&& f, V1&& v1 ) -> variant2::detail::Vret<F, V1>
|
||||||
{
|
{
|
||||||
return mp_for_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
return mp_with_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
||||||
|
|
||||||
return std::forward<F>(f)( get<I>( std::forward<V1>(v1) ) );
|
return std::forward<F>(f)( get<I>( std::forward<V1>(v1) ) );
|
||||||
|
|
||||||
@@ -1236,7 +1236,7 @@ template<class F, class V1> constexpr auto visit( F&& f, V1&& v1 ) -> variant2::
|
|||||||
|
|
||||||
template<class F, class V1, class V2> constexpr auto visit( F&& f, V1&& v1, V2&& v2 ) -> variant2::detail::Vret<F, V1, V2>
|
template<class F, class V1, class V2> constexpr auto visit( F&& f, V1&& v1, V2&& v2 ) -> variant2::detail::Vret<F, V1, V2>
|
||||||
{
|
{
|
||||||
return mp_for_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
return mp_with_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
||||||
|
|
||||||
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
||||||
return visit( f2, std::forward<V2>(v2) );
|
return visit( f2, std::forward<V2>(v2) );
|
||||||
@@ -1246,7 +1246,7 @@ template<class F, class V1, class V2> constexpr auto visit( F&& f, V1&& v1, V2&&
|
|||||||
|
|
||||||
template<class F, class V1, class V2, class V3> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3 ) -> variant2::detail::Vret<F, V1, V2, V3>
|
template<class F, class V1, class V2, class V3> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3 ) -> variant2::detail::Vret<F, V1, V2, V3>
|
||||||
{
|
{
|
||||||
return mp_for_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
return mp_with_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
||||||
|
|
||||||
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
||||||
return visit( f2, std::forward<V2>(v2), std::forward<V3>(v3) );
|
return visit( f2, std::forward<V2>(v2), std::forward<V3>(v3) );
|
||||||
@@ -1256,7 +1256,7 @@ template<class F, class V1, class V2, class V3> constexpr auto visit( F&& f, V1&
|
|||||||
|
|
||||||
template<class F, class V1, class V2, class V3, class V4> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3, V4&& v4 ) -> variant2::detail::Vret<F, V1, V2, V3, V4>
|
template<class F, class V1, class V2, class V3, class V4> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V3&& v3, V4&& v4 ) -> variant2::detail::Vret<F, V1, V2, V3, V4>
|
||||||
{
|
{
|
||||||
return mp_for_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
return mp_with_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
||||||
|
|
||||||
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
||||||
return visit( f2, std::forward<V2>(v2), std::forward<V3>(v3), std::forward<V4>(v4) );
|
return visit( f2, std::forward<V2>(v2), std::forward<V3>(v3), std::forward<V4>(v4) );
|
||||||
@@ -1268,7 +1268,7 @@ template<class F, class V1, class V2, class V3, class V4> constexpr auto visit(
|
|||||||
|
|
||||||
template<class F, class V1, class V2, class... V> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V&&... v ) -> variant2::detail::Vret<F, V1, V2, V...>
|
template<class F, class V1, class V2, class... V> constexpr auto visit( F&& f, V1&& v1, V2&& v2, V&&... v ) -> variant2::detail::Vret<F, V1, V2, V...>
|
||||||
{
|
{
|
||||||
return mp_for_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
return mp_with_index<variant2::detail::var_size<V1>>( v1.index(), [&]( auto I ){
|
||||||
|
|
||||||
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
auto f2 = [&]( auto&&... a ){ return std::forward<F>(f)( get<I.value>( std::forward<V1>(v1) ), std::forward<decltype(a)>(a)... ); };
|
||||||
return visit( f2, std::forward<V2>(v2), std::forward<V>(v)... );
|
return visit( f2, std::forward<V2>(v2), std::forward<V>(v)... );
|
||||||
|
Reference in New Issue
Block a user