From 12792a6c11fe8a1c6488dd455d24d20f308275ba Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 1 Dec 2015 01:14:52 +0900 Subject: [PATCH 1/4] Fix compile error with ambiguous ctor, close #11766. When a) first elem is sequence b) second (and third) elem is(are) void*, both of conversion ctor and forwarding ctor are candidate since SFINAE expression has void* type. --- include/boost/fusion/container/deque/deque.hpp | 7 ++++--- .../fusion/container/deque/detail/cpp03/deque.hpp | 11 ++++++----- include/boost/fusion/container/list/cons.hpp | 5 +++-- .../boost/fusion/container/list/detail/cpp03/list.hpp | 3 ++- include/boost/fusion/container/map/map.hpp | 7 ++++--- .../boost/fusion/container/set/detail/cpp03/set.hpp | 4 ++-- include/boost/fusion/container/set/set.hpp | 9 +++++---- .../fusion/container/vector/detail/cpp03/vector.hpp | 3 ++- include/boost/fusion/container/vector/vector.hpp | 3 ++- 9 files changed, 30 insertions(+), 22 deletions(-) diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index dee51bef..3bf0cd38 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -21,6 +21,7 @@ // C++11 interface /////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include @@ -59,7 +60,7 @@ namespace boost { namespace fusion typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty>>::type* /*dummy*/ = 0) BOOST_NOEXCEPT + , result_of::empty>, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED @@ -149,8 +150,8 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit deque(Sequence const& seq - , typename disable_if >::type* /*dummy*/ = 0 - , typename enable_if >::type* /*dummy*/ = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp index a65fa4ac..e99e2b20 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -102,8 +102,8 @@ namespace boost { namespace fusion { template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* /*dummy*/ = 0 - , typename enable_if >::type* /*dummy*/ = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} @@ -133,7 +133,7 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* /*dummy*/ = 0 + , typename enable_if, void_>::type = void_() ) : base(BOOST_FUSION_FWD_ELEM(T0_, t0), detail::nil_keyed_element()) {} @@ -146,7 +146,8 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* /*dummy*/ = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -180,7 +181,7 @@ FUSION_HASH endif typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* /*dummy*/ = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index e05b62eb..a176880c 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -9,6 +9,7 @@ #define FUSION_CONS_07172005_0843 #include +#include #include #include #include @@ -34,7 +35,6 @@ namespace boost { namespace fusion { - struct void_; struct cons_tag; struct forward_traversal_tag; struct fusion_sequence_tag; @@ -82,7 +82,8 @@ namespace boost { namespace fusion traits::is_sequence , mpl::not_ > , mpl::not_ > > // use copy to car instead - >::type* /*dummy*/ = 0 + , void_ + >::type = void_() ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/list.hpp b/include/boost/fusion/container/list/detail/cpp03/list.hpp index b39489b0..14f94939 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list.hpp @@ -8,6 +8,7 @@ #define FUSION_LIST_07172005_1153 #include +#include #include #include #include @@ -61,7 +62,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/container/map/map.hpp b/include/boost/fusion/container/map/map.hpp index e90d28a9..2c90a96d 100644 --- a/include/boost/fusion/container/map/map.hpp +++ b/include/boost/fusion/container/map/map.hpp @@ -35,6 +35,7 @@ #include #include #include +#include #include @@ -68,21 +69,21 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED map(Sequence const& seq - , typename enable_if>::type* /*dummy*/ = 0) + , typename enable_if, void_>::type = void_()) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template BOOST_FUSION_GPU_ENABLED map(Sequence& seq - , typename enable_if>::type* /*dummy*/ = 0) + , typename enable_if, void_>::type = void_()) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template BOOST_FUSION_GPU_ENABLED map(Sequence&& seq - , typename enable_if>::type* /*dummy*/ = 0) + , typename enable_if, void_>::type = void_()) : base_type(begin(seq), detail::map_impl_from_iterator()) {} diff --git a/include/boost/fusion/container/set/detail/cpp03/set.hpp b/include/boost/fusion/container/set/detail/cpp03/set.hpp index 46191c5c..3645a413 100644 --- a/include/boost/fusion/container/set/detail/cpp03/set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/set.hpp @@ -8,6 +8,7 @@ #define FUSION_SET_09162005_1104 #include +#include #include #include #include @@ -47,7 +48,6 @@ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template @@ -72,7 +72,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} #include diff --git a/include/boost/fusion/container/set/set.hpp b/include/boost/fusion/container/set/set.hpp index 12fd8115..ae660331 100644 --- a/include/boost/fusion/container/set/set.hpp +++ b/include/boost/fusion/container/set/set.hpp @@ -21,6 +21,7 @@ // C++11 interface /////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include @@ -60,8 +61,8 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs, - typename enable_if >::type* = 0, - typename enable_if >::type* = 0) + typename enable_if, void_>::type = void_(), + typename enable_if, void_>::type = void_()) : data(rhs) {} template @@ -102,8 +103,8 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED set(Sequence&& rhs, - typename enable_if >::type* = 0, - typename enable_if >::type* = 0) + typename enable_if, void_>::type = void_(), + typename enable_if, void_>::type = void_()) : data(std::forward(rhs)) {} template diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp index 5dcd6886..a8cc9adb 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -118,7 +119,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 845a019e..52f8afa3 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -24,6 +24,7 @@ /////////////////////////////////////////////////////////////////////////////// #include #include +#include #include #include #include @@ -164,7 +165,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED store(U&& rhs - , typename disable_if::type, store> >::type* = 0) + , typename disable_if::type, store>, void_>::type = void_()) : elem(std::forward(rhs)) {} From 3919f3ed73d8b2fac04808fb014df933cd41f2ac Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 1 Dec 2015 01:16:01 +0900 Subject: [PATCH 2/4] Fix missing header. --- include/boost/fusion/algorithm/transformation/zip.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index e94efc81..0775a429 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include From 2492ff9b2593184cbf4b26ea27abfc749cbfb665 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 1 Dec 2015 01:26:08 +0900 Subject: [PATCH 3/4] regen --- .../deque/detail/cpp03/preprocessed/deque10.hpp | 11 ++++++----- .../deque/detail/cpp03/preprocessed/deque20.hpp | 11 ++++++----- .../deque/detail/cpp03/preprocessed/deque30.hpp | 11 ++++++----- .../deque/detail/cpp03/preprocessed/deque40.hpp | 11 ++++++----- .../deque/detail/cpp03/preprocessed/deque50.hpp | 11 ++++++----- .../list/detail/cpp03/preprocessed/list10.hpp | 2 +- .../list/detail/cpp03/preprocessed/list20.hpp | 2 +- .../list/detail/cpp03/preprocessed/list30.hpp | 2 +- .../list/detail/cpp03/preprocessed/list40.hpp | 2 +- .../list/detail/cpp03/preprocessed/list50.hpp | 2 +- .../container/set/detail/cpp03/preprocessed/set10.hpp | 3 +-- .../container/set/detail/cpp03/preprocessed/set20.hpp | 3 +-- .../container/set/detail/cpp03/preprocessed/set30.hpp | 3 +-- .../container/set/detail/cpp03/preprocessed/set40.hpp | 3 +-- .../container/set/detail/cpp03/preprocessed/set50.hpp | 3 +-- .../vector/detail/cpp03/preprocessed/vvector10.hpp | 2 +- .../vector/detail/cpp03/preprocessed/vvector20.hpp | 2 +- .../vector/detail/cpp03/preprocessed/vvector30.hpp | 2 +- .../vector/detail/cpp03/preprocessed/vvector40.hpp | 2 +- .../vector/detail/cpp03/preprocessed/vvector50.hpp | 2 +- 20 files changed, 45 insertions(+), 45 deletions(-) diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp index 95cd8c1c..082c9a79 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp @@ -202,8 +202,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* = 0 - , typename enable_if >::type* = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -226,7 +226,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* = 0 + , typename enable_if, void_>::type = void_() ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -239,7 +239,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -267,7 +268,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp index ad069451..64a516d1 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp @@ -382,8 +382,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* = 0 - , typename enable_if >::type* = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -406,7 +406,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* = 0 + , typename enable_if, void_>::type = void_() ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -419,7 +419,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -447,7 +448,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp index 44a5b2b1..05cae20d 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp @@ -562,8 +562,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* = 0 - , typename enable_if >::type* = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -586,7 +586,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* = 0 + , typename enable_if, void_>::type = void_() ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -599,7 +599,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -627,7 +628,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp index e642288e..8cf0f833 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp @@ -742,8 +742,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* = 0 - , typename enable_if >::type* = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -766,7 +766,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* = 0 + , typename enable_if, void_>::type = void_() ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -779,7 +779,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -807,7 +808,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp index a387708b..c6e90120 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp @@ -922,8 +922,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if >::type* = 0 - , typename enable_if >::type* = 0) + , typename disable_if, void_>::type = void_() + , typename enable_if, void_>::type = void_()) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -946,7 +946,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if >::type* = 0 + , typename enable_if, void_>::type = void_() ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -959,7 +959,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - >::type* = 0) + , void_ + >::type = void_()) : base(std::forward>(seq)) {} template @@ -987,7 +988,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty > >::type* = 0) BOOST_NOEXCEPT + , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp index 47db8f58..f66fe303 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp index 8eb7d2d2..3486ef18 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp index fb24e8d4..b9e251a8 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp index 49437dee..a6825899 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp index 3ebbf195..33cb1246 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp index d2eba4c8..0c279756 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp @@ -8,7 +8,6 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template struct set : sequence_base > @@ -27,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp index 500e726e..2d224452 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp @@ -8,7 +8,6 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template struct set : sequence_base > @@ -27,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp index 6c92bead..586d1ccf 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp @@ -8,7 +8,6 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template struct set : sequence_base > @@ -27,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp index d3c3e5eb..6e972413 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp @@ -8,7 +8,6 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template struct set : sequence_base > @@ -27,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp index 1d2dfd44..09377d32 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp @@ -8,7 +8,6 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct void_; struct fusion_sequence_tag; template struct set : sequence_base > @@ -27,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) + , typename boost::enable_if, void_>::type = void_()) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp index cd2bd58b..48a94579 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp index 809485fe..50b79f49 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp index 3f75a05f..e222a528 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp index 6c7654cc..713465f7 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp index 47fce0e1..80597591 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) + typename boost::enable_if, void_>::type = void_()) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} From 64b8406c16651305d1414b6916467c338280a499 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 10 Dec 2015 17:06:04 +0900 Subject: [PATCH 4/4] Introduce detail::enabler instead of fusion::void_. --- .../boost/fusion/container/deque/deque.hpp | 7 +++--- .../container/deque/detail/cpp03/deque.hpp | 13 ++++++----- .../detail/cpp03/preprocessed/deque10.hpp | 12 +++++----- .../detail/cpp03/preprocessed/deque20.hpp | 12 +++++----- .../detail/cpp03/preprocessed/deque30.hpp | 12 +++++----- .../detail/cpp03/preprocessed/deque40.hpp | 12 +++++----- .../detail/cpp03/preprocessed/deque50.hpp | 12 +++++----- include/boost/fusion/container/list/cons.hpp | 5 +++-- .../container/list/detail/cpp03/list.hpp | 3 ++- .../list/detail/cpp03/preprocessed/list10.hpp | 2 +- .../list/detail/cpp03/preprocessed/list20.hpp | 2 +- .../list/detail/cpp03/preprocessed/list30.hpp | 2 +- .../list/detail/cpp03/preprocessed/list40.hpp | 2 +- .../list/detail/cpp03/preprocessed/list50.hpp | 2 +- include/boost/fusion/container/map/map.hpp | 7 +++--- .../set/detail/cpp03/preprocessed/set10.hpp | 2 +- .../set/detail/cpp03/preprocessed/set20.hpp | 2 +- .../set/detail/cpp03/preprocessed/set30.hpp | 2 +- .../set/detail/cpp03/preprocessed/set40.hpp | 2 +- .../set/detail/cpp03/preprocessed/set50.hpp | 2 +- .../fusion/container/set/detail/cpp03/set.hpp | 3 ++- include/boost/fusion/container/set/set.hpp | 9 ++++---- .../detail/cpp03/preprocessed/vvector10.hpp | 2 +- .../detail/cpp03/preprocessed/vvector20.hpp | 2 +- .../detail/cpp03/preprocessed/vvector30.hpp | 2 +- .../detail/cpp03/preprocessed/vvector40.hpp | 2 +- .../detail/cpp03/preprocessed/vvector50.hpp | 2 +- .../container/vector/detail/cpp03/vector.hpp | 3 ++- .../boost/fusion/container/vector/vector.hpp | 3 ++- .../boost/fusion/support/detail/enabler.hpp | 22 +++++++++++++++++++ 30 files changed, 98 insertions(+), 67 deletions(-) create mode 100644 include/boost/fusion/support/detail/enabler.hpp diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 3bf0cd38..a282a701 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -22,6 +22,7 @@ /////////////////////////////////////////////////////////////////////////////// #include #include +#include #include #include #include @@ -60,7 +61,7 @@ namespace boost { namespace fusion typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty>, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty>, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED @@ -150,8 +151,8 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp index e99e2b20..8cffe6b9 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -35,6 +35,7 @@ #include #include +#include #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) @@ -102,8 +103,8 @@ namespace boost { namespace fusion { template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} @@ -133,7 +134,7 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(BOOST_FUSION_FWD_ELEM(T0_, t0), detail::nil_keyed_element()) {} @@ -146,8 +147,8 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -181,7 +182,7 @@ FUSION_HASH endif typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp index 082c9a79..8267496c 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp @@ -202,8 +202,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -226,7 +226,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -239,8 +239,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -268,7 +268,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp index 64a516d1..a3adee14 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp @@ -382,8 +382,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -406,7 +406,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -419,8 +419,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -448,7 +448,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp index 05cae20d..4c56d9ff 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp @@ -562,8 +562,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -586,7 +586,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -599,8 +599,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -628,7 +628,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp index 8cf0f833..bb827e93 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp @@ -742,8 +742,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -766,7 +766,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -779,8 +779,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -808,7 +808,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp index c6e90120..af40651f 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp @@ -922,8 +922,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq - , typename disable_if, void_>::type = void_() - , typename enable_if, void_>::type = void_()) + , typename disable_if, detail::enabler_>::type = detail::enabler + , typename enable_if, detail::enabler_>::type = detail::enabler) : base(base::from_iterator(fusion::begin(seq))) {} template @@ -946,7 +946,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ template BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 - , typename enable_if, void_>::type = void_() + , typename enable_if, detail::enabler_>::type = detail::enabler ) : base(std::forward( t0), detail::nil_keyed_element()) {} @@ -959,8 +959,8 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ deque(deque&& seq , typename disable_if< is_convertible, T0> - , void_ - >::type = void_()) + , detail::enabler_ + >::type = detail::enabler) : base(std::forward>(seq)) {} template @@ -988,7 +988,7 @@ deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_ typename enable_if< mpl::and_< traits::is_sequence - , result_of::empty >, void_>::type = void_()) BOOST_NOEXCEPT + , result_of::empty >, detail::enabler_>::type = detail::enabler) BOOST_NOEXCEPT {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED deque() BOOST_NOEXCEPT {} diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index a176880c..0dd91b0c 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -82,8 +83,8 @@ namespace boost { namespace fusion traits::is_sequence , mpl::not_ > , mpl::not_ > > // use copy to car instead - , void_ - >::type = void_() + , detail::enabler_ + >::type = detail::enabler ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/list.hpp b/include/boost/fusion/container/list/detail/cpp03/list.hpp index 14f94939..048d59b6 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -62,7 +63,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp index f66fe303..818dc528 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp index 3486ef18..3c3c3f6c 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp index b9e251a8..143dce67 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp index a6825899..00e16041 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp index 33cb1246..b948f40a 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/map/map.hpp b/include/boost/fusion/container/map/map.hpp index 2c90a96d..ec9e58d3 100644 --- a/include/boost/fusion/container/map/map.hpp +++ b/include/boost/fusion/container/map/map.hpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -69,21 +70,21 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED map(Sequence const& seq - , typename enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template BOOST_FUSION_GPU_ENABLED map(Sequence& seq - , typename enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template BOOST_FUSION_GPU_ENABLED map(Sequence&& seq - , typename enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : base_type(begin(seq), detail::map_impl_from_iterator()) {} diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp index 0c279756..74e84717 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp index 2d224452..cab21048 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp index 586d1ccf..2ac448be 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp index 6e972413..76112505 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp index 09377d32..32954f42 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit diff --git a/include/boost/fusion/container/set/detail/cpp03/set.hpp b/include/boost/fusion/container/set/detail/cpp03/set.hpp index 3645a413..274a36eb 100644 --- a/include/boost/fusion/container/set/detail/cpp03/set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/set.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -72,7 +73,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs - , typename boost::enable_if, void_>::type = void_()) + , typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} #include diff --git a/include/boost/fusion/container/set/set.hpp b/include/boost/fusion/container/set/set.hpp index ae660331..f03488b1 100644 --- a/include/boost/fusion/container/set/set.hpp +++ b/include/boost/fusion/container/set/set.hpp @@ -22,6 +22,7 @@ /////////////////////////////////////////////////////////////////////////////// #include #include +#include #include #include #include @@ -61,8 +62,8 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs, - typename enable_if, void_>::type = void_(), - typename enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler, + typename enable_if, detail::enabler_>::type = detail::enabler) : data(rhs) {} template @@ -103,8 +104,8 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED set(Sequence&& rhs, - typename enable_if, void_>::type = void_(), - typename enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler, + typename enable_if, detail::enabler_>::type = detail::enabler) : data(std::forward(rhs)) {} template diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp index 48a94579..0b4e2574 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp index 50b79f49..44e8832f 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp index e222a528..13f7a626 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp index 713465f7..1730d988 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp index 80597591..fb334d1a 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp index a8cc9adb..8a7a4e5d 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -119,7 +120,7 @@ namespace boost { namespace fusion template BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, - typename boost::enable_if, void_>::type = void_()) + typename enable_if, detail::enabler_>::type = detail::enabler) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 52f8afa3..9d0f97bd 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -165,7 +166,7 @@ namespace boost { namespace fusion template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED store(U&& rhs - , typename disable_if::type, store>, void_>::type = void_()) + , typename disable_if::type, store>, detail::enabler_>::type = detail::enabler) : elem(std::forward(rhs)) {} diff --git a/include/boost/fusion/support/detail/enabler.hpp b/include/boost/fusion/support/detail/enabler.hpp new file mode 100644 index 00000000..9dd8b4bb --- /dev/null +++ b/include/boost/fusion/support/detail/enabler.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2015 Kohei Takahashi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_SUPPORT_DETAIL_ENABLER_12102015_0346 +#define BOOST_FUSION_SUPPORT_DETAIL_ENABLER_12102015_0346 + +#include + +namespace boost { namespace fusion { namespace detail +{ + +struct enabler_ {}; +BOOST_STATIC_CONSTEXPR enabler_ enabler = {}; + +}}} + +#endif +