1 // Copyright (C) 2004 Peder Holt
2 // Use, modification and distribution is subject to the Boost Software
3 // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
6 #define BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
8 #include <boost/config.hpp>
9 #include <boost/detail/workaround.hpp>
11 namespace boost { namespace detail {
12 # if BOOST_WORKAROUND(BOOST_MSVC,==1300)
14 struct msvc_extract_type
19 typedef id2type_impl<true> id2type;
22 template<typename T, typename ID>
23 struct msvc_register_type : msvc_extract_type<ID>
26 struct id2type_impl<true> //VC7.0 specific bugfeature
33 struct msvc_extract_type
38 template<typename T, typename ID>
39 struct msvc_register_type : msvc_extract_type<ID>
41 typedef msvc_extract_type<ID> base_type;
42 struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
50 #endif //BOOST_TYPETRAITS_MSVC_TYPEOF_IMPL_HPP