Mercurial > hg > vamp-build-and-test
annotate DEPENDENCIES/generic/include/boost/spirit/home/phoenix/object/static_cast.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
rev | line source |
---|---|
Chris@16 | 1 /*============================================================================= |
Chris@16 | 2 Copyright (c) 2001-2007 Joel de Guzman |
Chris@16 | 3 |
Chris@16 | 4 Distributed under the Boost Software License, Version 1.0. (See accompanying |
Chris@16 | 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
Chris@16 | 6 ==============================================================================*/ |
Chris@16 | 7 #ifndef PHOENIX_OBJECT_STATIC_CAST_HPP |
Chris@16 | 8 #define PHOENIX_OBJECT_STATIC_CAST_HPP |
Chris@16 | 9 |
Chris@16 | 10 #include <boost/spirit/home/phoenix/core/compose.hpp> |
Chris@16 | 11 |
Chris@16 | 12 namespace boost { namespace phoenix |
Chris@16 | 13 { |
Chris@16 | 14 namespace impl |
Chris@16 | 15 { |
Chris@16 | 16 template <typename T> |
Chris@16 | 17 struct static_cast_eval |
Chris@16 | 18 { |
Chris@16 | 19 template <typename Env, typename U> |
Chris@16 | 20 struct result |
Chris@16 | 21 { |
Chris@16 | 22 typedef T type; |
Chris@16 | 23 }; |
Chris@16 | 24 |
Chris@16 | 25 template <typename RT, typename Env, typename U> |
Chris@16 | 26 static RT |
Chris@16 | 27 eval(Env const& env, U& obj) |
Chris@16 | 28 { |
Chris@16 | 29 return static_cast<RT>(obj.eval(env)); |
Chris@16 | 30 } |
Chris@16 | 31 }; |
Chris@16 | 32 } |
Chris@16 | 33 |
Chris@16 | 34 template <typename T, typename U> |
Chris@16 | 35 inline actor<typename as_composite<impl::static_cast_eval<T>, U>::type> |
Chris@16 | 36 static_cast_(U const& obj) |
Chris@16 | 37 { |
Chris@16 | 38 return compose<impl::static_cast_eval<T> >(obj); |
Chris@16 | 39 } |
Chris@16 | 40 }} |
Chris@16 | 41 |
Chris@16 | 42 #endif |