diff --git a/include/boost/typeof/msvc/typeof_impl.hpp b/include/boost/typeof/msvc/typeof_impl.hpp old mode 100755 new mode 100644 index 2f58c18..9243a2b --- a/include/boost/typeof/msvc/typeof_impl.hpp +++ b/include/boost/typeof/msvc/typeof_impl.hpp @@ -153,58 +153,7 @@ namespace boost }; }; # endif -# if BOOST_WORKAROUND(BOOST_MSVC,==1310) - template - struct msvc_typeid_wrapper { - typedef typename msvc_extract_type::id2type id2type; - typedef typename id2type::type wrapped_type; - typedef typename wrapped_type::type type; - }; - //This class is used for registering the type T. encode_type is mapped against typeid(encode_type). - //msvc_typeid_wrapper)> will now have a type typedef that equals encode_type. - template - struct encode_type - { - typedef encode_type input_type; - //Invoke registration of encode_type. typeid(encode_type) is now mapped to encode_type. Do not use registered_type for anything. - //The reason for registering encode_type rather than T, is that VC handles typeid(function reference) poorly. By adding another - //level of indirection, we solve this problem. - typedef typename msvc_register_type >::id2type registered_type; - typedef T type; - }; - template typename disable_if< - typename is_function::type, - typename encode_type::input_type>::type encode_start(T const&); - - template typename enable_if< - typename is_function::type, - typename encode_type::input_type>::type encode_start(T&); - - template - msvc_register_type typeof_register_type(const T&); - - -# define BOOST_TYPEOF(expr) \ - boost::type_of::msvc_typeid_wrapper::type - -# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr) - -# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \ -struct name {\ - enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type(expr)))};\ - typedef typename boost::type_of::msvc_extract_type::id2type id2type;\ - typedef typename id2type::type type;\ -}; - -# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \ -struct name {\ - enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type(expr)))};\ - typedef boost::type_of::msvc_extract_type::id2type id2type;\ - typedef id2type::type type;\ -}; - -# else template struct msvc_typeid_wrapper { typedef typename msvc_extract_type >::id2type id2type; @@ -274,7 +223,6 @@ struct name {\ typedef id2type::type type;\ }; -#endif } }