]> git.donarmstrong.com Git - rsem.git/blob - boost/fusion/support/detail/as_fusion_element.hpp
Updated boost to v1.55.0
[rsem.git] / boost / fusion / support / detail / as_fusion_element.hpp
1 /*=============================================================================
2     Copyright (c) 1999-2003 Jaakko Jarvi
3     Copyright (c) 2001-2011 Joel de Guzman
4
5     Distributed under the Boost Software License, Version 1.0. (See accompanying 
6     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 #if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338)
9 #define FUSION_AS_FUSION_ELEMENT_05052005_0338
10
11 #include <boost/ref.hpp>
12
13 namespace boost { namespace fusion { namespace detail
14 {
15     template <typename T>
16     struct as_fusion_element
17     {
18         typedef T type;
19     };
20
21     template <typename T>
22     struct as_fusion_element<reference_wrapper<T> >
23     {
24         typedef T& type;
25     };
26
27     template <typename T, int N>
28     struct as_fusion_element<T[N]>
29     {
30         typedef const T(&type)[N];
31     };
32
33     template <typename T, int N>
34     struct as_fusion_element<volatile T[N]>
35     {
36         typedef const volatile T(&type)[N];
37     };
38
39     template <typename T, int N>
40     struct as_fusion_element<const volatile T[N]>
41     {
42         typedef const volatile T(&type)[N];
43     };
44
45 }}}
46
47 #endif