August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
一组模板实参是否满足了模板对其参数的要求?这个问题最终归结为某些表达式是否合法。
使用requires表达式,可以检查一组表达式是否合法。例如:
其中,requires requires不是拼写错误。第一个requires表示requirements子句的开始,而第二个requires是requires表达式的开始:
一个requires表达式就是一个谓词,当其中的语句是合法代码时为true,否则为false。
我将requires表达式视为泛型编程的汇编代码。类似普通的汇编代码,requires表达式非常灵活,而且没有强加新的编程规则。它以这样或那样的形式出现在最有趣的泛型代码的底层,就像汇编代码出现在最有趣的普通代码的底层那样。类似于汇编代码,requires表达式不应该被视为“普通代码”。如果你在代码中看到了requires requires,这很可能是非常底层的代码。
在advance()中,我故意以一种不优雅、不自然的方式使用requires requires。注意,我“忘记了”指出+=以及操作所需的返回类型。我已经警告过你!应优先选择命名概念,用名字指示其语义含义。
总结起来,应优先选择使用恰当命名的概念和明确指定的语义(参见7.2.4节),并在其定义中使用requires表达式。 ...
Read now
Unlock full access