diff --git a/include/boost/typeof/typeof_impl.hpp b/include/boost/typeof/typeof_impl.hpp index aa62cf6..9c23de6 100755 --- a/include/boost/typeof/typeof_impl.hpp +++ b/include/boost/typeof/typeof_impl.hpp @@ -107,6 +107,19 @@ namespace boost { namespace type_of { typedef _typeof_fraction_iter next;\ }; +#ifdef __MWERKS__ + +# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \ +template\ +struct BOOST_PP_CAT(_typeof_template_,name) {\ + BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\ + typedef typename boost::type_of::decode_type<_typeof_fraction_iter > >::type type;\ +};\ +typedef BOOST_PP_CAT(_typeof_template_,name) name; + +# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) BOOST_TYPEOF_NESTED_TYPEDEF(name,expr); + +#else # define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \ struct name {\ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\ @@ -118,5 +131,6 @@ namespace boost { namespace type_of { BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\ typedef boost::type_of::decode_type<_typeof_fraction_iter > >::type type;\ }; +#endif #endif//BOOST_TYPEOF_COMPLIANT_TYPEOF_IMPL_HPP_INCLUDED