Мне удалось найти несколько разговоров об этом в прошлом (например, here), но такие разговоры происходят довольно давно. Код у меня есть вопрос о том:По умолчанию Move Constructor в Visual Studio 2013 (обновление 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));
}
При выполнении кода в Visual Studio 2013 (Update 3), он печатает «копировать» в обоих случаях. Если стандарт не изменился после ответа в приведенной выше ссылке, тогда выход должен быть «копией», за которой следует «переместить». Идеал, кажется, дает правильный результат. Является ли это тем, что Visual Studio еще не реализовала, или что-то не хватает в моем коде? I know that you cannot mark move constructors as default, но это не означает, что компилятор не поддерживает генерацию конструкторов перемещения по умолчанию.
Это неутешительно. Я также нашел [этот график] (http://blogs.msdn.com/b/somasegar/archive/2013/06/28/cpp-conformance-roadmap.aspx), поэтому он выглядит так: vNext должен реализовывать его. Похоже, у меня есть код, который нужно изменить сейчас ... – Duncan
Это отстой, сосет сосет. –
Похоже, что он не будет реализован в VS2015 либо ... –