range_concept_check.cpp 907 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. *
  3. * Copyright (c) 2015
  4. * John Maddock
  5. *
  6. * Use, modification and distribution are subject to the
  7. * Boost Software License, Version 1.0. (See accompanying file
  8. * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  9. *
  10. */
  11. #include <boost/regex.hpp>
  12. #include <boost/range/concepts.hpp>
  13. template <class T>
  14. void use_val(const T&){}
  15. template <class T>
  16. void check()
  17. {
  18. BOOST_CONCEPT_ASSERT((boost::ForwardRangeConcept<T>));
  19. BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept<typename boost::range_iterator<T>::type>));
  20. BOOST_CONCEPT_ASSERT((boost_concepts::RandomAccessTraversalConcept<typename boost::range_iterator<T>::type>));
  21. #ifndef BOOST_NO_CXX11_RANGE_BASED_FOR
  22. const T val;
  23. for(auto item : val)
  24. {
  25. use_val(item);
  26. }
  27. #endif
  28. }
  29. int main()
  30. {
  31. check<boost::smatch>();
  32. check<boost::cmatch>();
  33. check <boost::sub_match<const char*> >();
  34. return 0;
  35. }