-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deleteのオーバーロードがGCCに怒られる対応 #386
deleteのオーバーロードがGCCに怒られる対応 #386
Conversation
レビューをお願いします。 Lines 25 to 34 in 8fb936b
34行目を |
9ba0ac2
to
e62606d
Compare
再現させるためにはどれを使ったらいいですか? |
#407 はマージしました。 |
pleiades 4.6.3 で再現しました。 mingw32-make MYDEFINES=-D_DEBUG MYCFLAGS="-g -O0" clean stdafx おんなじですが4.6.3で出たエラーメッセージです。 In file included from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/ext/new_allocator.h:33:0
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/x86_64-w64-mingw32/bits/c++allocator.h:33,
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/bits/allocator.h:46,
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/string:41,
from StdAfx.h:64:
H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/new:120:6: error: declaration of 'void operator delete(void*) noexcept' has a different exception specifier
void operator delete(void*) _GLIBCXX_USE_NOEXCEPT
^~~~~~~~
In file included from StdAfx.h:41:0:
config/build_config.h:98:7: note: from previous declaration 'void operator delete(void*)'
void operator delete(void* p);
^~~~~~~~
In file included from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/ext/new_allocator.h:33:0
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/x86_64-w64-mingw32/bits/c++allocator.h:33,
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/bits/allocator.h:46,
from H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/string:41,
from StdAfx.h:64:
H:/pleiades-4.6.3-cpp-win-64bit-jre_20170422/pleiades/eclipse/mingw/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/new:122:6: error: declaration of 'void operator delete [](void*) noexcept' has a different exception specifier
void operator delete[](void*) _GLIBCXX_USE_NOEXCEPT
^~~~~~~~
In file included from StdAfx.h:41:0:
config/build_config.h:99:7: note: from previous declaration 'void operator delete [](void*)'
void operator delete[](void* p);
^~~~~~~~
Makefile:449: recipe for target 'stdafx' failed
mingw32-make: *** [stdafx] Error 1
|
http://mergedoc.osdn.jp/ で
以下のようなエラーになりました。
|
http://mergedoc.osdn.jp/
これは以前 #306 (comment) で ぼく自身も遭遇したエラーな気がします。これが起きた理由は不明で、最近は発生していません。いずれにしても 4.3 Kepler では 最近導入した noexcept に対応してなくてビルドエラーになるっぽいです。 |
4.6.3 だと修正適用前でも後でもコンパイル通ります。 |
バッチファイルを見る限り、やり方が間違ってるとも思えないです。 http://mergedoc.osdn.jp/
|
これって、なんでマージしないんでしたっけ? appveyorでも、このPRで対処したいエラーは再現しています。 エラー発生のエビデンス
|
https://ci.appveyor.com/project/berryzplus/sakura/build/1.0.144 発生していないように見えます |
リンクが最新ビルドを指していました。 |
https://ci.appveyor.com/project/berryzplus/sakura/build/1.0.139/job/3xeoclf0x4buu60c
|
あざっす。マージしちゃいます。 |
…delete_signature deleteのオーバーロードがGCCに怒られる対応
#381 の本対応です。
MinGW でデバッグビルドを行った場合に、
deleteのオーバーロード定義のところでビルドエラーが発生しています。
ポイントは
declaration of 'void operator delete(void*) noexcept' has a different
の部分と考えられるのでシグニチャを合わせる対応を行います。MinGW版はまだビルドできないため、動作確認は行っていません。