http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59070
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |RESOLVED Resolution|--- |WORKSFORME --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is a valid testcase: #include <iostream> #include <vector> #include <string> struct VecPrinter { const std::vector<std::string>& v; }; std::ostream& operator<<(std::ostream& out, VecPrinter vp) { for (auto& i : vp.v) out << i << ' '; return out; } int main() { std::vector<std::string> items {"default"}; auto add = [=](std::string item) mutable { items.push_back(item); return items; }; std::cout << VecPrinter{ add("one") } << std::endl; std::cout << VecPrinter{ add("two") } << std::endl; std::cout << VecPrinter{ add("three") } << std::endl; } And it works perfectly with gcc version 4.8.3 20131029 (prerelease) (GCC) gcc version 4.9.0 20131002 (experimental) (GCC)