diff --git a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp index 1383e92a..b504c920 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp @@ -31,10 +31,10 @@ namespace boost { namespace fusion call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp index 5e2c3c06..9603a737 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp @@ -35,8 +35,7 @@ namespace boost { namespace fusion static type call(Iterator const& i) { - static type result; - return result; + return type(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp index efe963fd..893c3112 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp @@ -34,11 +34,11 @@ namespace boost { namespace fusion , typename Last::iterator_type>::type call(First const&, Last const&) { - static typename mpl::distance< + typedef typename mpl::distance< typename First::iterator_type , typename Last::iterator_type>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp index 1626b009..e2ae56be 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp @@ -35,8 +35,7 @@ namespace boost { namespace fusion static type call(Iterator) { - static type result; - return result; + return type(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp index abd873a5..ad1761b7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp @@ -29,10 +29,10 @@ namespace boost { namespace fusion typename Last::index, typename First::index>::type call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp index 43f2a40e..bf383e10 100644 --- a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp @@ -29,10 +29,10 @@ namespace boost { namespace fusion typename Last::index, typename First::index>::type call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index 46f8246d..c81fc738 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -16,8 +16,6 @@ #include #include #include -#include -#include namespace boost { namespace fusion { @@ -54,20 +52,11 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template - explicit vector( - T const& rhs -#if defined(BOOST_MSVC) -// VC++ gets confused when RHS is a derived type. It fails to call -// the copy ctor and attempts to call this templated constructor instead. - , typename disable_if< - is_convertible // use copy ctor instead - >::type* dummy = 0 -#endif - ) + explicit vector(T const& rhs) : vec(rhs) {} // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: + // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: // // vector( // typename detail::call_param::type _0 diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp index 0ce0636d..324b5985 100644 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion inline typename result_of::empty::type empty(Sequence const&) { - static typename result_of::empty::type result; - return result; + typedef typename result_of::empty::type result; + return result(); } }} diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index a8b07e20..24190fb0 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -43,8 +43,8 @@ namespace boost { namespace fusion inline typename result_of::has_key::type has_key(Sequence const& seq) { - static typename result_of::has_key::type result; - return result; + typedef typename result_of::has_key::type result; + return result(); } }} diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index 1ff9360b..c9fe923b 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -38,8 +38,8 @@ namespace boost { namespace fusion inline typename result_of::size::type size(Sequence const&) { - static typename result_of::size::type result; - return result; + typedef typename result_of::size::type result; + return result(); } }}