|
|
@@ -1,5 +1,7 @@
|
|
|
#pragma once
|
|
|
|
|
|
+#include <memory>
|
|
|
+
|
|
|
#include "source.hpp"
|
|
|
|
|
|
namespace stream {
|
|
|
@@ -13,6 +15,11 @@ namespace stream {
|
|
|
return std::make_shared<detail::source_stream<C>>(std::forward<C>(cont));
|
|
|
}
|
|
|
|
|
|
+ template <typename T>
|
|
|
+ detail::stream_base<T&> make_empty_stream() {
|
|
|
+ return std::make_shared<detail::range_stream<T*, T&>>(nullptr, nullptr);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Construct a single element stream containing the pointer given
|
|
|
*/
|
|
|
@@ -38,7 +45,7 @@ namespace stream {
|
|
|
detail::stream_base<T &> make_range_stream(T start, T const & end) {
|
|
|
std::vector<T> vec;
|
|
|
vec.reserve(end - start);
|
|
|
- while (end < start) {
|
|
|
+ while (start < end) {
|
|
|
vec.emplace_back(start++);
|
|
|
}
|
|
|
return make_stream(std::move(vec));
|