diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 41196974..075bee7d 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -85,7 +85,7 @@ namespace boost { namespace fusion : car(rhs.car), cdr(rhs.cdr) {} template - explicit cons( + cons( Sequence const& seq , typename disable_if< mpl::or_< diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp index d3743d10..67219fff 100644 --- a/include/boost/fusion/sequence/container/list/list.hpp +++ b/include/boost/fusion/sequence/container/list/list.hpp @@ -35,8 +35,8 @@ namespace boost { namespace fusion list(list const& rhs) : inherited_type(rhs) {} - template - explicit list(T const& rhs) + template + list(Sequence const& rhs) : inherited_type(rhs) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp index 82bcfe8e..0a19d823 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -45,8 +45,8 @@ namespace boost { namespace fusion map() : data() {} - template - explicit map(T const& rhs) + template + map(Sequence const& rhs) : data(rhs) {} #include diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp index 68b2f7c9..965e6e60 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -45,8 +45,8 @@ namespace boost { namespace fusion set() : data() {} - template - explicit set(T const& rhs) + template + set(Sequence const& rhs) : data(rhs) {} #include diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index 923165d0..ab295432 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -88,7 +88,10 @@ typedef mpl::int_ size; BOOST_PP_CAT(vector, N)() {} - + +#if (N == 1) + explicit +#endif BOOST_PP_CAT(vector, N)( BOOST_PP_ENUM_BINARY_PARAMS( N, typename detail::call_param::type _)) @@ -100,7 +103,7 @@ : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} template - explicit BOOST_PP_CAT(vector, N)( + BOOST_PP_CAT(vector, N)( Sequence const& seq , typename disable_if >::type* dummy = 0) : base_type(base_type::init_from_sequence(seq)) {} diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index e4da4e70..bf7ea597 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -56,10 +56,10 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} - template - explicit vector(T const& rhs) + template + vector(Sequence const& rhs) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) - : vec(ctor_helper(rhs, is_base_of())) {} + : vec(ctor_helper(rhs, is_base_of())) {} #else : vec(rhs) {} #endif diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index 2e5ef15c..1e3d9cca 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -30,8 +30,8 @@ namespace boost { namespace fusion tuple() : base_type() {} - template - explicit tuple(T const& rhs) + template + tuple(Sequence const& rhs) : base_type(rhs) {} #include