1/*=============================================================================
2 Copyright (c) 2007 Tobias Schwinger
3
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==============================================================================*/
8
9#if !defined(BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED)
10#define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED
11
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>
17
18
19namespace boost { namespace fusion { namespace traits
20{
21 template <class Sequence> struct deduce_sequence;
22
23 namespace detail
24 {
25 struct deducer
26 {
27 template <typename Sig>
28 struct result;
29
30 template <class Self, typename T>
31 struct result< Self(T) >
32 : fusion::traits::deduce<T>
33 { };
34
35 // never called, but needed for decltype-based result_of (C++0x)
36#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
37 template <typename T>
38 BOOST_FUSION_GPU_ENABLED
39 typename result< deducer(T) >::type
40 operator()(T&&) const;
41#endif
42 };
43 }
44
45 template <class Sequence>
46 struct deduce_sequence
47 : result_of::as_vector<
48 fusion::transform_view<Sequence, detail::deducer> >
49 { };
50
51}}}
52
53#endif
54
55

source code of boost/boost/fusion/support/deduce_sequence.hpp