次のコードがあります。
#include <vector>
#include <algorithm>
#include <memory>
struct monkey
{
int mA, mB;
monkey(int a, int b) : mA(a), mB(b)
{
}
};
typedef std::shared_ptr<std::vector<monkey>> MonkeyContainer;
int main()
{
MonkeyContainer monkeyContainer;
monkeyContainer->emplace_back(1, 2);
}
そして、それは常にクラッシュしemplace_back()
ます。それでも問題なくコンパイルでき、問題は見られません。なぜクラッシュするのですか?スローされた例外とコード行は次のとおりです。
Unhandled exception at 0x00FE2299 in ConsoleApplication2.exe: 0xC0000005: Access violation reading location 0x00000008.
で
vector.h - line 894: _VARIADIC_EXPAND_0X(_VECTOR_EMPLACE, , , , )
私は VS2012 を使用しており、November CTP とデフォルト コンパイラの両方を試しました。
ブースト サポートがないなどの理由で VS2013 atm を使用できません。MSVC11 の修正はありますか?