1 /*//////////////////////////////////////////////////////////////////////////////
2     Copyright (c) 2013 Jamboree
3 
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //////////////////////////////////////////////////////////////////////////////*/
7 #ifndef BOOST_FUSION_ALGORITHM_FLATTEN_HPP_INCLUDED
8 #define BOOST_FUSION_ALGORITHM_FLATTEN_HPP_INCLUDED
9 
10 
11 #include <boost/fusion/view/flatten_view.hpp>
12 #include <boost/fusion/support/is_sequence.hpp>
13 #include <boost/utility/enable_if.hpp>
14 
15 
16 namespace boost { namespace fusion { namespace result_of
17 {
18     template<typename Sequence>
19     struct flatten
20     {
21         typedef flatten_view<Sequence> type;
22     };
23 }}}
24 
25 namespace boost { namespace fusion
26 {
27     template <typename Sequence>
28     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
29     inline typename result_of::flatten<Sequence>::type
flatten(Sequence & view)30     flatten(Sequence& view)
31     {
32         return flatten_view<Sequence>(view);
33     }
34 
35     template <typename Sequence>
36     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
37     inline typename result_of::flatten<Sequence const>::type
flatten(Sequence const & view)38     flatten(Sequence const& view)
39     {
40         return flatten_view<Sequence const>(view);
41     }
42 }}
43 
44 
45 #endif
46 
47