123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #ifndef BOOST_HANA_FWD_RANGE_HPP
- #define BOOST_HANA_FWD_RANGE_HPP
- #include <boost/hana/config.hpp>
- #include <boost/hana/fwd/core/make.hpp>
- #include <boost/hana/fwd/integral_constant.hpp>
- BOOST_HANA_NAMESPACE_BEGIN
- #ifdef BOOST_HANA_DOXYGEN_INVOKED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- template <typename T, T from, T to>
- struct range {
-
- template <typename X, typename Y>
- friend constexpr auto operator==(X&& x, Y&& y);
-
- template <typename X, typename Y>
- friend constexpr auto operator!=(X&& x, Y&& y);
-
- template <typename N>
- constexpr decltype(auto) operator[](N&& n);
- };
- #else
- template <typename T, T from, T to>
- struct range;
- #endif
-
-
- struct range_tag { };
- #ifdef BOOST_HANA_DOXYGEN_INVOKED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- template <>
- constexpr auto make<range_tag> = [](auto const& from, auto const& to) {
- return range<implementation_defined>{implementation_defined};
- };
- #endif
-
-
- constexpr auto make_range = make<range_tag>;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #ifdef BOOST_HANA_DOXYGEN_INVOKED
- template <typename T, T from, T to>
- constexpr auto range_c = make_range(integral_c<T, from>, integral_c<T, to>);
- #else
- template <typename T, T from, T to>
- constexpr range<T, from, to> range_c{};
- #endif
- BOOST_HANA_NAMESPACE_END
- #endif
|