For reasons I do not fully understand, std::vector<std::unique_future<T>>'s push_back fails because it attempts to use the (deleted) copy constructor and (copying) assignment operator. The std::vector implementation seems to support move-only objects in C++0x mode, and I don't really see why that is not working here.
$ g++-4.5-20091112 -v Using built-in specs. COLLECT_GCC=/usr/local/bin/g++-4.5-20091112 COLLECT_LTO_WRAPPER=/usr/local/gcc-4.5-20091112/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4.5-20091112/configure --prefix=/usr/local/gcc-4.5-20091112 --program-suffix=-4.5-20091112 --enable-languages=c,c++ Thread model: posix gcc version 4.5.0 20091112 (experimental) (GCC) -- Summary: [C++0x] std::vector<std::unique_future<T>>::push_back fails Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: lloyd at randombit dot net GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42201