1 /*============================================================================== 2 Copyright (c) 2001-2010 Joel de Guzman 3 Copyright (c) 2010 Thomas Heller 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 #ifndef BOOST_PHOENIX_OBJECT_DETAIL_CAST_TARGET_HPP 9 #define BOOST_PHOENIX_OBJECT_DETAIL_CAST_TARGET_HPP 10 11 namespace boost { namespace phoenix 12 { 13 namespace detail 14 { 15 template <typename T> 16 struct target 17 { 18 typedef T type; 19 }; 20 21 namespace result_of 22 { 23 template <typename T> 24 struct target 25 { 26 typedef 27 typename proto::detail::uncvref< 28 typename proto::result_of::value<T>::type 29 >::type 30 target_type; 31 typedef typename target_type::type type; 32 }; 33 34 template <typename T> 35 struct target<T const&> 36 : target<T> 37 {}; 38 39 template <typename T> 40 struct target<T&> 41 : target<T> 42 {}; 43 } 44 } 45 }} 46 47 #endif 48