]> git.donarmstrong.com Git - rsem.git/blob - boost/type_traits/msvc/typeof.hpp
Updated boost to v1.55.0
[rsem.git] / boost / type_traits / msvc / typeof.hpp
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)
4
5 #ifndef BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
6 #define BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
7
8 #include <boost/config.hpp>
9 #include <boost/detail/workaround.hpp>
10
11 namespace boost { namespace detail {
12 # if BOOST_WORKAROUND(BOOST_MSVC,==1300)
13         template<typename ID>
14         struct msvc_extract_type
15         {
16             template<bool>
17             struct id2type_impl;
18
19             typedef id2type_impl<true> id2type;
20         };
21
22         template<typename T, typename ID>
23         struct msvc_register_type : public msvc_extract_type<ID>
24         {
25             template<>
26             struct id2type_impl<true>  //VC7.0 specific bugfeature
27             {
28                 typedef T type;
29             };
30         };
31 # else 
32         template<typename ID>
33         struct msvc_extract_type
34         {
35             struct id2type;
36         };
37
38         template<typename T, typename ID>
39         struct msvc_register_type : public msvc_extract_type<ID>
40         {
41             typedef msvc_extract_type<ID> base_type;
42             struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
43             {
44                 typedef T type;
45             };
46         };
47 # endif
48 }}
49
50 #endif //BOOST_TYPETRAITS_MSVC_TYPEOF_IMPL_HPP