しばらくの間、g++ 4.7.2 で CppUTest を問題なく使用しています。ただし、-std=c++11
使用を開始できるようにオプションをオンにしたところ、std::unique_ptr
すぐに失敗します。
メインモジュールをコンパイルするだけでも:
#include <CppUTest/CommandLineTestRunner.h>
int main(int argc, char ** argv) {
return CommandLineTestRunner::RunAllTests(argc, argv);
}
次のバリエーションで失敗します。
In file included from /usr/include/CppUTest/TestHarness.h:77:0,
from /usr/include/CppUTest/CommandLineTestRunner.h:31,
from tests/testmain.cpp:15:
/usr/include/CppUTest/MemoryLeakWarningPlugin.h:56:53: error: declaration of ‘void* operator new(size_t) throw (std::bad_alloc)’ has a different exception specifier
In file included from /usr/include/c++/4.7/ext/new_allocator.h:34:0,
from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h:34,
from /usr/include/c++/4.7/bits/allocator.h:48,
from /usr/include/c++/4.7/string:43,
from /usr/include/CppUTest/SimpleString.h:136,
from /usr/include/CppUTest/Utest.h:34,
from /usr/include/CppUTest/TestHarness.h:71,
from /usr/include/CppUTest/CommandLineTestRunner.h:31,
from tests/testmain.cpp:15:
/usr/include/c++/4.7/new:93:7: error: from previous declaration ‘void* operator new(std::size_t)’
オプションを削除する-std=c++11
と、すべてが正常に機能するようになります。
CppUTest のドキュメントでは、オーバーロードされた新しい演算子と競合するマクロについていくつかのコメントがあり、最初に標準ヘッダーを #include することを提案していますが、ヘッダーをまったく含めずにこの問題が発生しCppUTest/CommandLineTestRunner.h
ます<string>
。
誰でも以前にこれに出くわしたり、問題が何であるかを知っていますか?