| /*============================================================================= |
| Copyright (c) 1999-2003 Jaakko Jarvi |
| Copyright (c) 2001-2006 Joel de Guzman |
| |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| ==============================================================================*/ |
| #if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338) |
| #define FUSION_AS_FUSION_ELEMENT_05052005_0338 |
| |
| #include <boost/ref.hpp> |
| |
| namespace boost { namespace fusion { namespace detail |
| { |
| template <typename T> |
| struct as_fusion_element |
| { |
| typedef T type; |
| }; |
| |
| template <typename T> |
| struct as_fusion_element<reference_wrapper<T> > |
| { |
| typedef T& type; |
| }; |
| |
| template <typename T, int N> |
| struct as_fusion_element<T[N]> |
| { |
| typedef const T(&type)[N]; |
| }; |
| |
| template <typename T, int N> |
| struct as_fusion_element<volatile T[N]> |
| { |
| typedef const volatile T(&type)[N]; |
| }; |
| |
| template <typename T, int N> |
| struct as_fusion_element<const volatile T[N]> |
| { |
| typedef const volatile T(&type)[N]; |
| }; |
| |
| }}} |
| |
| #endif |