source: XIOS/dev/dev_olga/src/extern/boost/include/boost/type_traits/msvc/remove_extent.hpp @ 1022

Last change on this file since 1022 was 1022, checked in by mhnguyen, 7 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
11namespace 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.