gpt4 book ai didi

c++ - 为什么使用无效概念被视为格式错误

转载 作者:行者123 更新时间:2023-12-02 05:01:10 25 4
gpt4 key购买 nike

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

If the substitution of template arguments into a requirement would always result in a substitution failure, the program is ill-formed; no diagnostic required. [ Example:

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

— end example ]

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

最佳答案

需求表达式几乎可以做任何事情。它们可以引发进一步的模板替换,通过任意数量的代码向外级联。并记住模板替换构成 Turning complete language .

因此,您要求编译器在给定图灵完整程序的情况下证明是否存在某些输入导致该程序格式良好。这只是对停止问题的重述。就像停止问题一样,在一些简单的情况下,程序显然会停止/不停止。但是当您处理图灵完备的语言时,它可能会变得任意复杂。

该标准不会强制编译器解决停止问题。

关于c++ - 为什么使用无效概念被视为格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60500013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com