VS2012で作成したMFCプロジェクトをVS2015へコンバートしたらxmemory0でエラーがでた話
過去にVisual Studio 2012で作成したMFCプロジェクトを、Visual Studio 2015でコンバートしたところ、xmemory0 でのエラーが出てしまいました。
エラー内容
C2338 The C++ Standard forbids containers of const elements because allocator is ill-formed.
C2535 'const std::basic_string<wchar_t,std::char_traits,std::allocator> *std::allocator<_Ty>:address(const std::basic_string<wchar_t,std::char_traits,std::allocator> &) noexcept const': メンバー関数は、既に定義または宣言されています。
C2535 'const std::basic_string<wchar_t,std::char_traits,std::allocator> *std::_Wrap_alloc<std::allocator<_Ty>>::address(const std::basic_string<wchar_t,std::char_traits,std::allocator> &) const': メンバー関数は、既に定義または宣言されています。
対策
とりあえずMSDNを見に行ったら、答えが書いてありました。
const 要素
https://msdn.microsoft.com/ja-jp/library/bb531344.aspx
C++ 標準には常に、const 要素の禁止コンテナーがあります (vector や set など)。 Visual C++ 2013 以前では、そのようなコンテナーは受け入れられていました。 現在のバージョンでは、そのようなコンテナーをコンパイルすることはできません。
ということで、プロジェクト内を検索して一通り const を削除したところ無事にビルドできるようになりました。
Stackoverflow にも質問している人がいました。
Xmemory errors in C++ project after migrating VS 2012 to VS 2015
おしまい。
ディスカッション
コメント一覧
まだ、コメントがありません