|
@@ -11,6 +11,8 @@
|
|
|
|
|
|
|
|
#include <stream/iterator/iota_iterator.h>
|
|
#include <stream/iterator/iota_iterator.h>
|
|
|
|
|
|
|
|
|
|
+#include <stream/detail/macro.h>
|
|
|
|
|
+
|
|
|
namespace stream::ranges {
|
|
namespace stream::ranges {
|
|
|
template <typename T, typename Bound> struct iota_view {
|
|
template <typename T, typename Bound> struct iota_view {
|
|
|
public:
|
|
public:
|
|
@@ -33,9 +35,7 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool empty() const { return begin().at_end(); }
|
|
bool empty() const { return begin().at_end(); }
|
|
|
- auto size() const -> std::enable_if_t<has_size_v, size_t> {
|
|
|
|
|
- return begin().distance_to(end());
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ SFINAE(has_size_v, size_t) size() const { return begin().distance_to(end()); }
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -46,3 +46,5 @@ template <typename T, typename Bound> auto iota(T value, Bound bound) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MAKE_ITERATOR_FACADE_TYPEDEFS_T(stream::ranges::iota_iterator);
|
|
MAKE_ITERATOR_FACADE_TYPEDEFS_T(stream::ranges::iota_iterator);
|
|
|
|
|
+
|
|
|
|
|
+#include <stream/detail/undef.h>
|