diff --git a/folly/futures/Future-inl.h b/folly/futures/Future-inl.h index fb110d0..86883c6 100644 --- a/folly/futures/Future-inl.h +++ b/folly/futures/Future-inl.h @@ -602,8 +602,8 @@ template struct CollectContextHelper; template struct CollectContextHelper::value>::type> { - static inline std::vector& getResults(std::vector& results) { - return results; + static inline std::vector&& getResults(std::vector& results) { + return std::move(results); } }; diff --git a/folly/futures/test/FutureTest.cpp b/folly/futures/test/FutureTest.cpp index edc9d30..08f13af 100644 --- a/folly/futures/test/FutureTest.cpp +++ b/folly/futures/test/FutureTest.cpp @@ -877,6 +877,18 @@ TEST(Future, collect) { EXPECT_THROW(allf.value(), eggs_t); } + + // move only compiles + { + vector>> promises(10); + vector>> futures; + + for (auto& p : promises) + futures.push_back(p.getFuture()); + + collect(futures.begin(), futures.end()); + } + } struct NotDefaultConstructible {