【问题标题】:How to prevent compilation if an error status is ignored?如果忽略错误状态,如何防止编译?
【发布时间】:2015-02-02 15:35:43
【问题描述】:

在 cppcon 的 talk 期间,Titus Winters 声明(在 42:00)他们有一个 Status 课程。该类的神奇之处在于,如果返回 Status 对象并且没有对其执行任何操作,则 C++ 构建应该会失败(请注意,如果这是正确的做法,可以显式调用 IgnoreError()) .

这怎么可能?

据我所知,Status 类没有什么特别之处。我想他们必须在他们的构建过程中加入这条规则,但怎么能做到呢?

【问题讨论】:

  • 不可能按照您的解释进行(如果不使用对象,则构建失败,而不调用它的方法)
  • 你可以清楚地看到在你链接到的代码中 Status 类捆绑了一个 enumstd::string 并且析构函数和 IgnoreError() 函数的实现什么都不做 - 没有魔法就在其中-因此,如果有任何强制措施,它必须是在 Google 在构建期间运行其代码的某些静态分析工具中......而不是通过标准 C++ 功能。

标签: c++ exception error-code


【解决方案1】:

现在有 [[nodiscard]] 属性可以做到这一点。

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 2018-12-12
    • 2021-08-06
    • 2021-01-09
    • 2019-03-10
    • 2015-02-09
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多