Chris@16
|
1 /*=============================================================================
|
Chris@16
|
2 Copyright (c) 2001-2009 Joel de Guzman
|
Chris@16
|
3 Copyright (c) 2005-2006 Dan Marsden
|
Chris@16
|
4 Copyright (c) 2010 Christopher Schmidt
|
Chris@16
|
5
|
Chris@16
|
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
8 ==============================================================================*/
|
Chris@16
|
9
|
Chris@16
|
10 #ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP
|
Chris@16
|
11 #define BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP
|
Chris@16
|
12
|
Chris@101
|
13 #include <boost/fusion/support/config.hpp>
|
Chris@16
|
14 #include <boost/type_traits/remove_const.hpp>
|
Chris@16
|
15 #include <boost/type_traits/remove_reference.hpp>
|
Chris@16
|
16 #include <boost/fusion/support/as_const.hpp>
|
Chris@16
|
17 #include <boost/fusion/adapted/struct/detail/extension.hpp>
|
Chris@16
|
18
|
Chris@16
|
19 namespace boost { namespace fusion
|
Chris@101
|
20 {
|
Chris@16
|
21 namespace detail
|
Chris@16
|
22 {
|
Chris@101
|
23 template <typename T, typename Dummy>
|
Chris@101
|
24 struct get_identity
|
Chris@101
|
25 : remove_const<typename remove_reference<T>::type>
|
Chris@101
|
26 {};
|
Chris@16
|
27 }
|
Chris@101
|
28
|
Chris@16
|
29 namespace extension
|
Chris@16
|
30 {
|
Chris@16
|
31 // Overload as_const() to unwrap adt_attribute_proxy.
|
Chris@16
|
32 template <typename T, int N, bool Const>
|
Chris@101
|
33 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
Chris@16
|
34 typename adt_attribute_proxy<T, N, Const>::type as_const(const adt_attribute_proxy<T, N, Const>& proxy)
|
Chris@16
|
35 {
|
Chris@16
|
36 return proxy.get();
|
Chris@16
|
37 }
|
Chris@16
|
38 }
|
Chris@16
|
39 }}
|
Chris@16
|
40
|
Chris@16
|
41 #endif
|