diff options
Diffstat (limited to 'boost/mp11/tuple.hpp')
-rw-r--r-- | boost/mp11/tuple.hpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/boost/mp11/tuple.hpp b/boost/mp11/tuple.hpp index a5de900959..c65be1b1dc 100644 --- a/boost/mp11/tuple.hpp +++ b/boost/mp11/tuple.hpp @@ -9,14 +9,13 @@ // http://www.boost.org/LICENSE_1_0.txt #include <boost/mp11/integer_sequence.hpp> -#include <boost/config.hpp> -#include <boost/config/workaround.hpp> +#include <boost/mp11/detail/config.hpp> #include <tuple> #include <utility> #include <type_traits> #include <cstddef> -#if defined(BOOST_MSVC) +#if BOOST_MP11_MSVC # pragma warning( push ) # pragma warning( disable: 4100 ) // unreferenced formal parameter 'tp' #endif @@ -30,7 +29,7 @@ namespace mp11 namespace detail { -template<class F, class Tp, std::size_t... J> BOOST_CONSTEXPR auto tuple_apply_impl( F && f, Tp && tp, integer_sequence<std::size_t, J...> ) +template<class F, class Tp, std::size_t... J> BOOST_MP11_CONSTEXPR auto tuple_apply_impl( F && f, Tp && tp, integer_sequence<std::size_t, J...> ) -> decltype( std::forward<F>(f)( std::get<J>(std::forward<Tp>(tp))... ) ) { return std::forward<F>(f)( std::get<J>(std::forward<Tp>(tp))... ); @@ -40,7 +39,7 @@ template<class F, class Tp, std::size_t... J> BOOST_CONSTEXPR auto tuple_apply_i template<class F, class Tp, class Seq = make_index_sequence<std::tuple_size<typename std::remove_reference<Tp>::type>::value>> -BOOST_CONSTEXPR auto tuple_apply( F && f, Tp && tp ) +BOOST_MP11_CONSTEXPR auto tuple_apply( F && f, Tp && tp ) -> decltype( detail::tuple_apply_impl( std::forward<F>(f), std::forward<Tp>(tp), Seq() ) ) { return detail::tuple_apply_impl( std::forward<F>(f), std::forward<Tp>(tp), Seq() ); @@ -50,7 +49,7 @@ BOOST_CONSTEXPR auto tuple_apply( F && f, Tp && tp ) namespace detail { -template<class T, class Tp, std::size_t... J> BOOST_CONSTEXPR T construct_from_tuple_impl( Tp && tp, integer_sequence<std::size_t, J...> ) +template<class T, class Tp, std::size_t... J> BOOST_MP11_CONSTEXPR T construct_from_tuple_impl( Tp && tp, integer_sequence<std::size_t, J...> ) { return T( std::get<J>(std::forward<Tp>(tp))... ); } @@ -59,7 +58,7 @@ template<class T, class Tp, std::size_t... J> BOOST_CONSTEXPR T construct_from_t template<class T, class Tp, class Seq = make_index_sequence<std::tuple_size<typename std::remove_reference<Tp>::type>::value>> -BOOST_CONSTEXPR T construct_from_tuple( Tp && tp ) +BOOST_MP11_CONSTEXPR T construct_from_tuple( Tp && tp ) { return detail::construct_from_tuple_impl<T>( std::forward<Tp>(tp), Seq() ); } @@ -68,20 +67,20 @@ BOOST_CONSTEXPR T construct_from_tuple( Tp && tp ) namespace detail { -template<class Tp, std::size_t... J, class F> BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, integer_sequence<std::size_t, J...>, F && f ) +template<class Tp, std::size_t... J, class F> BOOST_MP11_CONSTEXPR F tuple_for_each_impl( Tp && tp, integer_sequence<std::size_t, J...>, F && f ) { using A = int[sizeof...(J)]; return (void)A{ ((void)f(std::get<J>(std::forward<Tp>(tp))), 0)... }, std::forward<F>(f); } -template<class Tp, class F> BOOST_CONSTEXPR F tuple_for_each_impl( Tp && /*tp*/, integer_sequence<std::size_t>, F && f ) +template<class Tp, class F> BOOST_MP11_CONSTEXPR F tuple_for_each_impl( Tp && /*tp*/, integer_sequence<std::size_t>, F && f ) { return std::forward<F>(f); } } // namespace detail -template<class Tp, class F> BOOST_CONSTEXPR F tuple_for_each( Tp && tp, F && f ) +template<class Tp, class F> BOOST_MP11_CONSTEXPR F tuple_for_each( Tp && tp, F && f ) { using seq = make_index_sequence<std::tuple_size<typename std::remove_reference<Tp>::type>::value>; return detail::tuple_for_each_impl( std::forward<Tp>(tp), seq(), std::forward<F>(f) ); @@ -90,7 +89,7 @@ template<class Tp, class F> BOOST_CONSTEXPR F tuple_for_each( Tp && tp, F && f ) } // namespace mp11 } // namespace boost -#if defined(BOOST_MSVC) +#if BOOST_MP11_MSVC # pragma warning( pop ) #endif |