I've just worked out the problem is that Visual Studio doesn't create default move constructors like it should. Will sort this out tomorrow.