Index: third_party/boost/boost/type_traits/msvc/typeof.hpp |
diff --git a/third_party/boost/boost/type_traits/msvc/typeof.hpp b/third_party/boost/boost/type_traits/msvc/typeof.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ebb0e803f600bf8dd15f3241f823979a6944bbed |
--- /dev/null |
+++ b/third_party/boost/boost/type_traits/msvc/typeof.hpp |
@@ -0,0 +1,50 @@ |
+// Copyright (C) 2004 Peder Holt |
+// Use, modification and distribution is subject to the Boost Software |
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) |
+ |
+#ifndef BOOST_TYPETRAITS_MSVC_TYPEOF_HPP |
+#define BOOST_TYPETRAITS_MSVC_TYPEOF_HPP |
+ |
+#include <boost/config.hpp> |
+#include <boost/detail/workaround.hpp> |
+ |
+namespace boost { namespace detail { |
+# if BOOST_WORKAROUND(BOOST_MSVC,==1300) |
+ template<typename ID> |
+ struct msvc_extract_type |
+ { |
+ template<bool> |
+ struct id2type_impl; |
+ |
+ typedef id2type_impl<true> id2type; |
+ }; |
+ |
+ template<typename T, typename ID> |
+ struct msvc_register_type : msvc_extract_type<ID> |
+ { |
+ template<> |
+ struct id2type_impl<true> //VC7.0 specific bugfeature |
+ { |
+ typedef T type; |
+ }; |
+ }; |
+# else |
+ template<typename ID> |
+ struct msvc_extract_type |
+ { |
+ struct id2type; |
+ }; |
+ |
+ template<typename T, typename ID> |
+ struct msvc_register_type : msvc_extract_type<ID> |
+ { |
+ typedef msvc_extract_type<ID> base_type; |
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature |
+ { |
+ typedef T type; |
+ }; |
+ }; |
+# endif |
+}} |
+ |
+#endif //BOOST_TYPETRAITS_MSVC_TYPEOF_IMPL_HPP |