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

时间:2015-03-12 19:46:04

标签: c++ qt c++11 moc

在带有clang的MacOSX Yosemite上我无法编译标题中包含以下方法的文件(updaterplugin.h:47):

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

Clang说:

  

-o moc_updaterplugin.cpp updaterplugin.h:47:解析错误")"

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

同样有趣的是,这种行为在某种程度上取决于Qt,因为普通的C ++ 11代码成功编译,而像这样的错误通常来自Qt的 MOC - 类。

有没有解决这个问题?

1 个答案:

答案 0 :(得分:2)

C ++ 11中似乎exception specificationsdeprecated(但noexcept说明符很重要。)

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

即可