]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/fusion/include/boost/fusion/support/deduce_sequence.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / fusion / include / boost / fusion / support / deduce_sequence.hpp
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
19 namespace 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