次のようなコードがあります。
class Data
{
public:
Data(const std::vector<int> &_data)
{
my_data = _data;
}
private:
std::vector<int> my_data;
};
int main()
{
std::vector<std::shared_ptr<Data>> vec = {
std::shared_ptr<Data>(new Data(std::vector<int>({ 1, 2 ,3 }))),
std::shared_ptr<Data>(new Data(std::vector<int>({ 3, 4 ,5 })))
};
// breakpoint
return 0;
}
どういうわけか、(ブレークポイントで) 値をチェックするためにプログラムを一時停止すると、最初の ( vec[0]
) 要素が破棄され、2 番目の要素 ( vec[1]
) は問題ありません。ここで何が起こっているのですか?それはコンパイラのバグですか?新しい Visual Studio 2013 を使用しています。