diff --git a/src/engine/Result.cpp b/src/engine/Result.cpp index 3b476777bb..11ce5324fc 100644 --- a/src/engine/Result.cpp +++ b/src/engine/Result.cpp @@ -72,6 +72,10 @@ Result::Result(IdTableVocabPair pair, std::vector sortedBy) // _____________________________________________________________________________ Result::Result(Generator idTables, std::vector sortedBy) + : Result{LazyResult{std::move(idTables)}, std::move(sortedBy)} {} + +// _____________________________________________________________________________ +Result::Result(LazyResult idTables, std::vector sortedBy) : data_{GenContainer{[](auto idTables, auto sortedBy) -> Generator { std::optional previousId = std::nullopt; for (IdTableVocabPair& pair : idTables) { diff --git a/src/engine/Result.h b/src/engine/Result.h index c372cf7102..18d92e5806 100644 --- a/src/engine/Result.h +++ b/src/engine/Result.h @@ -117,6 +117,8 @@ class Result { LocalVocab&& localVocab); Result(IdTableVocabPair pair, std::vector sortedBy); Result(Generator idTables, std::vector sortedBy); + Result(LazyResult idTables, std::vector sortedBy); + // Prevent accidental copying of a result table. Result(const Result& other) = delete; Result& operator=(const Result& other) = delete; diff --git a/src/util/Iterators.h b/src/util/Iterators.h index 00e1470ddb..1640bef474 100644 --- a/src/util/Iterators.h +++ b/src/util/Iterators.h @@ -279,6 +279,11 @@ class InputRangeFromGet { public: virtual ~InputRangeFromGet() = default; + InputRangeFromGet() = default; + InputRangeFromGet(InputRangeFromGet&&) = default; + InputRangeFromGet& operator=(InputRangeFromGet&&) = default; + InputRangeFromGet(const InputRangeFromGet&) = default; + InputRangeFromGet& operator=(const InputRangeFromGet&) = default; // Get the next value and store it. void getNextAndStore() { storage_ = get(); }