为什么使用无效概念被认为是错误的形式

问题描述 投票:1回答:1

[新发布的草案在[expr.prim.req]/6中提到:

如果将模板参数替换为requirement总是导致替换失败,程序格式错误;没有需要诊断。 [示例:

template<typename T> concept C =
requires {
  new int[-(int)sizeof(T)];     // ill-formed, no diagnostic required
};

— <>]]

但是为什么我们不能保证诊断总是失败,而不是跳过诊断?

[新发布的草案在[expr.prim.req] / 6中提到:如果将模板参数替换为需求始终会导致替换失败,则程序格式错误;否...

c++ templates require c++20 c++-concepts
1个回答
2
投票
需求表达式几乎可以做任何事情。他们可以通过任意数量的代码向外引发更多的模板替换。并记得模板替换构成了Turning complete language
© www.soinside.com 2019 - 2024. All rights reserved.