【发布时间】:2020-03-10 10:20:07
【问题描述】:
我敢肯定,对于这里的 c++17 大师来说,这是一个简单的问题。我正在尝试使用 clang-tidy 和 clang-9 将一些 c++11 现代化到 gnu++17,并且对 clang-tidy 指示要修复的内容以及如何修复它感到困惑。
这是头文件中的一些原始代码
namespace foo{
class bar {
public:
virtual ~bar() = default;
virtual RealtimeConfig realtimeConfig() const noexcept = 0;
};
}
整洁的变化
'realtimeConfig' 应标记为 [[nodiscard]]
警告:此函数使用尾随返回类型
虚拟 RealtimeConfig realtimeConfig() const noexcept = 0;
~~~~~~~~~~~~~~ ^ auto -> RealtimeConfig
我已阅读此处CPP 的文档,但我不明白以下内容的目的是什么
const noexcept = 0;
似乎没有什么可扔的,那么它是如何返回的呢?那么我需要做什么才能通过 clang-tidy?
如果这个问题的位置不对,请告诉我,以便我移动它。
【问题讨论】:
-
这真的是使 clang-tidy 发出警告的所有代码吗?我不知道 clang-tidy,但是当您在方法声明中没有
auto时,它会警告添加尾随返回类型,这看起来有点奇怪。此外,您关于noexcept = 0;的问题似乎与来自clang 的警告无关。这不是你的代码吗?谁把noexcept = 0;放在那里了?顺便说一句,const不属于noexcept,但它将该方法声明为const方法 -
换句话说:请提供minimal reproducible example,每个问题请回答一个问题
-
clang-tidy和很多这样的工具一样,经常会基于主观考虑(例如风格、包括作者在内的特定人或群体所倡导的偏好等)发布“建议”。这意味着您应该将这些消息视为“要考虑的选项”,而不是“使您的代码更好的遵循方向”。您可能有充分的理由不指定[[nodiscard]]或不使用训练返回类型 - 在这种情况下,盲目地处理来自clang-tidy的警告会适得其反。