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