diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:24:45 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:24:45 +0900 |
commit | 5ce1cfc2525b06c0a9e38531813781de0281c96d (patch) | |
tree | 19cc66c6cf6396db288813b2558cc350f1deede2 /boost/hana/detail | |
parent | 3c1df2168531ad5580076ae08d529054689aeedd (diff) | |
download | boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.tar.gz boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.tar.bz2 boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.zip |
Imported Upstream version 1.71.0upstream/1.71.0
Diffstat (limited to 'boost/hana/detail')
-rw-r--r-- | boost/hana/detail/integral_constant.hpp | 4 | ||||
-rw-r--r-- | boost/hana/detail/preprocessor.hpp | 5 | ||||
-rw-r--r-- | boost/hana/detail/struct_macros.hpp | 35 | ||||
-rw-r--r-- | boost/hana/detail/variadic/reverse_apply.hpp | 4 |
4 files changed, 46 insertions, 2 deletions
diff --git a/boost/hana/detail/integral_constant.hpp b/boost/hana/detail/integral_constant.hpp index 6fa7735164..72a40dacae 100644 --- a/boost/hana/detail/integral_constant.hpp +++ b/boost/hana/detail/integral_constant.hpp @@ -231,7 +231,11 @@ BOOST_HANA_NAMESPACE_BEGIN }; #else template <typename T, T v> +#ifdef BOOST_HANA_WORKAROUND_MSVC_EMPTYBASE + struct __declspec(empty_bases) integral_constant +#else struct integral_constant +#endif : std::integral_constant<T, v> , detail::operators::adl<integral_constant<T, v>> { diff --git a/boost/hana/detail/preprocessor.hpp b/boost/hana/detail/preprocessor.hpp index 6a141187e7..4487ad8daf 100644 --- a/boost/hana/detail/preprocessor.hpp +++ b/boost/hana/detail/preprocessor.hpp @@ -22,7 +22,12 @@ Distributed under the Boost Software License, Version 1.0. //! @ingroup group-details //! Expands to its first argument. +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_PP_FRONT(...) BOOST_HANA_PP_FRONT_IMPL_I(__VA_ARGS__) +#define BOOST_HANA_PP_FRONT_IMPL_I(...) BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, ),) +#else #define BOOST_HANA_PP_FRONT(...) BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, ) +#endif #define BOOST_HANA_PP_FRONT_IMPL(e0, ...) e0 //! @ingroup group-details diff --git a/boost/hana/detail/struct_macros.hpp b/boost/hana/detail/struct_macros.hpp index e99ab4fac8..8298de67d6 100644 --- a/boost/hana/detail/struct_macros.hpp +++ b/boost/hana/detail/struct_macros.hpp @@ -67,8 +67,13 @@ BOOST_HANA_NAMESPACE_BEGIN namespace struct_detail { //! //! Specifically, `BOOST_HANA_PP_NARG(x1, ..., xn)` expands to `n`. It is //! an error to call this macro with 0 arguments. +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_PP_NARG(...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,),) +#else #define BOOST_HANA_PP_NARG(...) \ BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,) +#endif #define BOOST_HANA_PP_NARG_IMPL(e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,e31,e32,e33,e34,e35,e36,e37,e38,e39,e40, N, ...) N @@ -80,8 +85,14 @@ BOOST_HANA_NAMESPACE_BEGIN namespace struct_detail { #define BOOST_HANA_PP_BACK(...) \ BOOST_HANA_PP_BACK_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__) +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_PP_BACK_IMPL(N, ...) BOOST_HANA_PP_BACK_IMPL_I(N, __VA_ARGS__) +#define BOOST_HANA_PP_BACK_IMPL_I(N, ...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_BACK_IMPL_, N)(__VA_ARGS__),) +#else #define BOOST_HANA_PP_BACK_IMPL(N, ...) \ BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_BACK_IMPL_, N)(__VA_ARGS__) +#endif #define BOOST_HANA_PP_BACK_IMPL_1(e1) e1 @@ -173,8 +184,14 @@ BOOST_HANA_NAMESPACE_BEGIN namespace struct_detail { #define BOOST_HANA_PP_DROP_BACK(...) \ BOOST_HANA_PP_DROP_BACK_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__) +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_PP_DROP_BACK_IMPL(N, ...) BOOST_HANA_PP_DROP_BACK_IMPL_I(N, __VA_ARGS__) +#define BOOST_HANA_PP_DROP_BACK_IMPL_I(N, ...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_DROP_BACK_IMPL_, N)(__VA_ARGS__),) +#else #define BOOST_HANA_PP_DROP_BACK_IMPL(N, ...) \ BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_DROP_BACK_IMPL_, N)(__VA_ARGS__) +#endif #define BOOST_HANA_PP_DROP_BACK_IMPL_1(e1) @@ -271,8 +288,14 @@ struct BOOST_HANA_ADAPT_STRUCT_must_be_called_in_the_global_namespace; static_assert(true, "force the usage of a trailing semicolon") \ /**/ +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_ADAPT_STRUCT_IMPL(N, ...) BOOST_HANA_ADAPT_STRUCT_IMPL_I(N, __VA_ARGS__) +#define BOOST_HANA_ADAPT_STRUCT_IMPL_I(N, ...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_STRUCT_IMPL_, N)(__VA_ARGS__),) +#else #define BOOST_HANA_ADAPT_STRUCT_IMPL(N, ...) \ BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_STRUCT_IMPL_, N)(__VA_ARGS__) +#endif #define BOOST_HANA_ADAPT_STRUCT_IMPL_1(TYPE ) \ @@ -1109,8 +1132,14 @@ struct BOOST_HANA_ADAPT_ADT_must_be_called_in_the_global_namespace; static_assert(true, "force the usage of a trailing semicolon") \ /**/ +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_ADAPT_ADT_IMPL(N, ...) BOOST_HANA_ADAPT_ADT_IMPL_I(N, __VA_ARGS__) +#define BOOST_HANA_ADAPT_ADT_IMPL_I(N, ...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_ADT_IMPL_, N)(__VA_ARGS__),) +#else #define BOOST_HANA_ADAPT_ADT_IMPL(N, ...) \ BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_ADT_IMPL_, N)(__VA_ARGS__) +#endif #define BOOST_HANA_ADAPT_ADT_IMPL_1(TYPE ) \ @@ -1981,8 +2010,14 @@ struct BOOST_HANA_ADAPT_ADT_must_be_called_in_the_global_namespace; #define BOOST_HANA_DEFINE_STRUCT(...) \ BOOST_HANA_DEFINE_STRUCT_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__) +#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033 +#define BOOST_HANA_DEFINE_STRUCT_IMPL(N, ...) BOOST_HANA_DEFINE_STRUCT_IMPL_I(N, __VA_ARGS__) +#define BOOST_HANA_DEFINE_STRUCT_IMPL_I(N, ...) \ + BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_CONCAT(BOOST_HANA_DEFINE_STRUCT_IMPL_, N)(__VA_ARGS__),) +#else #define BOOST_HANA_DEFINE_STRUCT_IMPL(N, ...) \ BOOST_HANA_PP_CONCAT(BOOST_HANA_DEFINE_STRUCT_IMPL_, N)(__VA_ARGS__) +#endif #define BOOST_HANA_DEFINE_STRUCT_IMPL_1(TYPE ) \ diff --git a/boost/hana/detail/variadic/reverse_apply.hpp b/boost/hana/detail/variadic/reverse_apply.hpp index b276fa4177..a1f71ff53c 100644 --- a/boost/hana/detail/variadic/reverse_apply.hpp +++ b/boost/hana/detail/variadic/reverse_apply.hpp @@ -18,8 +18,8 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic { BOOST_HANA_CONSTEXPR_LAMBDA auto reverse_apply = [](auto&& f, auto&& ...x) -> decltype(auto) { return detail::variadic::reverse_apply_unrolled( - static_cast<decltype(f)&&>(f), - static_cast<decltype(x)&&>(x)... + static_cast<decltype(f)>(f), + static_cast<decltype(x)>(x)... ); }; }} BOOST_HANA_NAMESPACE_END |