我已經能夠在過去找到關於此的多個對話(例如here),但此類對話來自不久前。我有一個問題有關的代碼是: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(更新3)的代碼,它打印出「複製」兩種情況。如果自從上述鏈接中的答案之後標準沒有改變,則輸出應該是「複製」,然後是「移動」。 Ideone似乎給出了正確的輸出。這只是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 2014-10-27 05:13:13
這很糟糕。 – 2014-12-21 06:14:14
似乎它不會在VS2015實施... – 2015-06-08 20:10:52