是否会在 C++20 中删除宏 `assert`?
Will the macro `assert` be removed in C++20?
根据 cppreference,assert
将用作 C++ 属性。
但是,已经存在大量严重依赖宏的项目assert
,有什么不好的影响吗?
assert
的新用法不会引起任何问题,因为它后面没有 (
,因此不会调用函数式宏 assert(blah)
.
没有。引入 C++20 契约的提案 p0542r5 说:
Note that while assert(expression)
would expand as a function-like macro with the appropriate header, assert:
is not a function-like invocation, so does not expand.
根据 cppreference,assert
将用作 C++ 属性。
但是,已经存在大量严重依赖宏的项目assert
,有什么不好的影响吗?
assert
的新用法不会引起任何问题,因为它后面没有 (
,因此不会调用函数式宏 assert(blah)
.
没有。引入 C++20 契约的提案 p0542r5 说:
Note that while
assert(expression)
would expand as a function-like macro with the appropriate header,assert:
is not a function-like invocation, so does not expand.