1 /*=============================================================================
2 Copyright (c) 2007 Tobias Schwinger
4 Use modification and distribution are subject to the Boost Software
5 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt).
7 ==============================================================================*/
9 #if !defined(BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED)
10 #define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED
12 #include <boost/fusion/support/config.hpp>
13 #include <boost/fusion/support/deduce.hpp>
14 #include <boost/fusion/container/vector/convert.hpp>
15 #include <boost/fusion/view/transform_view.hpp>
16 #include <boost/config.hpp>
19 namespace boost { namespace fusion { namespace traits
21 template <class Sequence> struct deduce_sequence;
27 template <typename Sig>
30 template <class Self, typename T>
31 struct result< Self(T) >
32 : fusion::traits::deduce<T>
35 // never called, but needed for decltype-based result_of (C++0x)
36 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
38 BOOST_FUSION_GPU_ENABLED
39 typename result< deducer(T) >::type
40 operator()(T&&) const;
45 template <class Sequence>
46 struct deduce_sequence
47 : result_of::as_vector<
48 fusion::transform_view<Sequence, detail::deducer> >