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 要素
C++ 標準には常に、const 要素の禁止コンテナーがあります (vector や set など)。 Visual C++ 2013 以前では、そのようなコンテナーは受け入れられていました。 現在のバージョンでは、そのようなコンテナーをコンパイルすることはできません。

引用元:Visual C++ 2015 での互換性に影響する変更点

ということで、プロジェクト内を検索して一通り const を削除したところ無事にビルドできるようになりました。

Stackoverflow にも質問している人がいました。
Xmemory errors in C++ project after migrating VS 2012 to VS 2015

おしまい。

スポンサーリンク

デスクトップ用_記事下_レクタングル

デスクトップ用_記事下_レクタングル

-C++, Visual Studio
-,

Copyright© Pelican Philosophy , 2019 All Rights Reserved Powered by STINGER.