Qt/C++11 抛出,方法原型中的最终覆盖

Qt/C++11 throw, final override in method prototype

在 MacOSX Yosemite 上使用 clang 我无法编译包含以下方法的文件 header (updaterplugin.h:47):

void update() throw(std::runtime_error) final override;

铿锵声说:

-o moc_updaterplugin.cpp updaterplugin.h:47: Parse error at ")"

当我删除 throw(std::runtime_error) 语句时它编译成功。

另一个有趣的事实是,此行为在某种程度上取决于 Qt,因为普通 C++11 代码编译成功,而此类错误通常来自 Qt 的 MOC-类。

有什么解决办法吗?

似乎 exception specifications are deprecated in C++11 (but the noexcept 说明符很重要)。

所以只需删除 throw(std::runtime_error)