It is my understanding that the purpose of std::vector::emplace_back() is specifically to avoid calling a copy constructor, and instead to cons
std::vector::emplace_back()
Visual Studio 2013 and earlier fails to write default move constructors for you. Add a simple explicit move constructor to stuff.
stuff
A push or emplace back can cause stuff to be moved if it needs to reallocate, which in your case copies, as stuff has no move.
It is a msvc bug.