flatten.hpp 1.2 KB

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