source:
vendors/XIOS/current/extern/boost/include/boost/type_traits/msvc/remove_extent.hpp
@
3428
Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago | |
---|---|
File size: 1.5 KB |
Line | |
---|---|
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_TYPE_TRAITS_MSVC_REMOVE_EXTENT_HOLT_2004_0827 |
6 | #define BOOST_TYPE_TRAITS_MSVC_REMOVE_EXTENT_HOLT_2004_0827 |
7 | |
8 | #include <boost/type_traits/msvc/typeof.hpp> |
9 | #include <boost/type_traits/is_array.hpp> |
10 | |
11 | namespace boost { |
12 | namespace detail { |
13 | template<bool IsArray> |
14 | struct remove_extent_impl_typeof { |
15 | template<typename T,typename ID> |
16 | struct inner { |
17 | typedef T type; |
18 | }; |
19 | }; |
20 | template<> |
21 | struct remove_extent_impl_typeof<true> { |
22 | template<typename T,typename ID> |
23 | struct inner { |
24 | template<typename U> |
25 | static msvc_register_type<U,ID> test(U[]); |
26 | static msvc_register_type<T,ID> test(...); |
27 | BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) )); |
28 | typedef typename msvc_extract_type<ID>::id2type::type type; |
29 | }; |
30 | }; |
31 | } //namespace detail |
32 | |
33 | template<typename T> |
34 | struct remove_extent { |
35 | typedef typename boost::detail::remove_extent_impl_typeof< |
36 | boost::is_array<T>::value |
37 | >::template inner<T,remove_extent<T> >::type type; |
38 | BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_extent,T) |
39 | }; |
40 | } //namespace boost |
41 | |
42 | #endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827 |
43 |
Note: See TracBrowser
for help on using the repository browser.