begin_impl.hpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*=============================================================================
  2. Copyright (c) 2001-2011 Joel de Guzman
  3. Copyright (c) 2009 Christopher Schmidt
  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_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP
  8. #define BOOST_FUSION_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP
  9. #include <boost/fusion/support/config.hpp>
  10. #include <boost/fusion/iterator/basic_iterator.hpp>
  11. namespace boost { namespace fusion { namespace extension
  12. {
  13. template <typename>
  14. struct begin_impl;
  15. template <>
  16. struct begin_impl<set_tag>
  17. {
  18. template <typename Seq>
  19. struct apply
  20. {
  21. typedef
  22. basic_iterator<
  23. set_iterator_tag
  24. , typename Seq::category
  25. , Seq
  26. , 0
  27. >
  28. type;
  29. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  30. static type
  31. call(Seq& seq)
  32. {
  33. return type(seq,0);
  34. }
  35. };
  36. };
  37. }}}
  38. #endif