Sono stato in grado di trovare più conversazioni su questo in passato (ad esempio here), ma tali conversazioni provengono da un po 'di tempo fa. Il codice Ho una domanda circa è:Costruttore di spostamento predefinito in Visual Studio 2013 (Update 3)
#include <utility>
#include <iostream>
struct Foo
{
Foo() = default;
Foo(const Foo &o)
{
std::cout << "copy" << std::endl;
}
Foo(Foo &&o)
{
std::cout << "move" << std::endl;
}
};
struct Bar
{
Foo foo;
};
int main(void)
{
Bar a;
Bar b(a);
Bar c(std::move(a));
}
Se si esegue il codice in Visual Studio 2013 (Update 3), esso stampa "copia" per entrambi i casi. Se lo standard non è cambiato dopo la risposta nel link sopra, allora l'output dovrebbe essere "copy" seguito da "move". Ideone sembra dare l'output corretto. È solo qualcosa che Visual Studio non ha ancora implementato, o c'è qualcosa che manca nel mio codice? I know that you cannot mark move constructors as default, ma ciò non implica che il compilatore non supporti generatori di movimento predefiniti nel loro insieme.
Questo è deludente. Ho anche trovato [questo grafico] (http://blogs.msdn.com/b/somasegar/archive/2013/06/28/cpp-conformance-roadmap.aspx), quindi sembra che vNext dovrebbe averlo implementato. Sembra che io abbia del codice da modificare subito ... – Duncan
Questo schifo fa schifo. –
Sembra che non verrà implementato in VS2015 ... –