VC11 Update 2 ではunique_ptr
、std::vector で をプッシュするときに移動コンストラクターが必要なようです。これは文書化された動作ですか、それとも既知のバグですか?
#include < iostream>
#include <memory>
#include <vector>
struct TEST
{
std::unique_ptr<int> m_l;
TEST(
std::unique_ptr<int>&& l)
{
m_l = std::move(l);
};
//Move Contructor for Test
TEST(TEST&& o)
{
m_l = std::move(o.m_l);
}
};
void Bar()
{
std::vector<TEST> vec;
std::unique_ptr<int> a(new int);
//Compiles fine without a Move Constructor
TEST(std::move(a));
//Requires a Move Contructor to compile
vec.push_back(
TEST(std::move(a)));
}
int main()
{
Bar();
return 0;
}
ノート
上記のコードをIDEONE C++11で Move Constructor を使用せずに試してみたところ、正常にコンパイルされました。