【问题标题】:Will the macro `assert` be removed in C++20?宏 `assert` 会在 C++20 中被删除吗?
【发布时间】:2018-09-19 02:32:57
【问题描述】:

根据cppreferenceassert 将用作 C++ 属性。

但是,已经有大量项目严重依赖宏assert,有什么不好的影响吗?

【问题讨论】:

  • 他们是用任何东西替换它还是只是删除有用的功能?
  • 没问题,因为assert这个词后面不会跟(所以它不会调用函数式宏。
  • @solarflare 没有被删除。

标签: c++ standards assert defensive-programming c++20


【解决方案1】:

没有。引入 C++20 合约的提案p0542r5 说:

请注意,虽然assert(expression) 将扩展为具有适当标题的类函数宏,但assert: 不是类函数调用,因此不会扩展。

【讨论】:

    【解决方案2】:

    assert 的新用法不会引起任何问题,因为它后面没有 (,因此不会调用函数式宏 assert(blah)

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多