123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*=============================================================================
- Copyright (c) 2007 Tobias Schwinger
- Use modification and distribution are subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- ==============================================================================*/
- #if !defined(BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED)
- #define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED
- #include <boost/fusion/support/config.hpp>
- #include <boost/fusion/support/deduce.hpp>
- #include <boost/fusion/container/vector/convert.hpp>
- #include <boost/fusion/view/transform_view.hpp>
- #include <boost/config.hpp>
- namespace boost { namespace fusion { namespace traits
- {
- template <class Sequence> struct deduce_sequence;
- namespace detail
- {
- struct deducer
- {
- template <typename Sig>
- struct result;
- template <class Self, typename T>
- struct result< Self(T) >
- : fusion::traits::deduce<T>
- { };
- // never called, but needed for decltype-based result_of (C++0x)
- #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- template <typename T>
- BOOST_FUSION_GPU_ENABLED
- typename result< deducer(T) >::type
- operator()(T&&) const;
- #endif
- };
- }
- template <class Sequence>
- struct deduce_sequence
- : result_of::as_vector<
- fusion::transform_view<Sequence, detail::deducer> >
- { };
- }}}
- #endif
|