File indexing completed on 2025-12-16 09:49:29
0001
0002
0003
0004
0005
0006
0007
0008 #if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338)
0009 #define FUSION_AS_FUSION_ELEMENT_05052005_0338
0010
0011 #include <boost/fusion/support/config.hpp>
0012 #include <boost/core/ref.hpp>
0013
0014 #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
0015 #include <functional>
0016 #endif
0017
0018 namespace boost { namespace fusion { namespace detail
0019 {
0020 template <typename T>
0021 struct as_fusion_element
0022 {
0023 typedef T type;
0024 };
0025
0026 template <typename T>
0027 struct as_fusion_element<reference_wrapper<T> >
0028 {
0029 typedef T& type;
0030 };
0031
0032 #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
0033 template <typename T>
0034 struct as_fusion_element<std::reference_wrapper<T> >
0035 {
0036 typedef T& type;
0037 };
0038 #endif
0039
0040 template <typename T, int N>
0041 struct as_fusion_element<T[N]>
0042 {
0043 typedef const T(&type)[N];
0044 };
0045
0046 template <typename T, int N>
0047 struct as_fusion_element<volatile T[N]>
0048 {
0049 typedef const volatile T(&type)[N];
0050 };
0051
0052 template <typename T, int N>
0053 struct as_fusion_element<const volatile T[N]>
0054 {
0055 typedef const volatile T(&type)[N];
0056 };
0057
0058 }}}
0059
0060 #endif