gpt4 book ai didi

c++ - C++20 概念 bool 可测试的奥秘

转载 作者:行者123 更新时间:2023-12-03 19:39:49 27 4
gpt4 key购买 nike

C++20 引入了一个比较概念 boolean-testable ,但是我注意到它的斜体和中间的连字符,说明它是仅供说明的,因为 std::boolean_testable 中没有所谓的 <concepts> ,我们不能在我们自己使用它代码。
这个 仅用于说明的 概念的目的是什么?为什么这个概念如此神秘?

最佳答案

与所有仅用于说明的概念一样,其目的是简化标准中的规范。它只是用于指定其他(可能面向用户的)概念的构建块,而无需重复概念模型中的内容。值得注意的是,它出现在 another exposition-only concept 的规范中

template<class T, class U>
concept weakly-equality-comparable-with = // exposition only
requires(const remove_reference_t<T>& t,
const remove_reference_t<U>& u) {
{ t == u } -> boolean-testable;
{ t != u } -> boolean-testable;
{ u == t } -> boolean-testable;
{ u != t } -> boolean-testable;
};
weakly-equality-comparable-with 适用于重载比较运算符的类型,返回类型不一定是逐字 bool。我们仍然可以使用这些表达式来比较对象,因此标准试图对它们进行推理。这不是假设,它们可以出现在野外。来自 Palo Alto report 的一个例子:

... One such example is an early version of the QChar class (1.5 and earlier, at least) (Nokia Corporation, 2011).

class QChar
{
friend int operator==(QChar c1, QChar c2);
friend int operator!=(QChar c1, QChar c2);
};

We should be able to use this class in our standard algorithms, despite the fact that the operator does not return a bool.


至于你的另一个问题

And why is this concept so mysterious?


不是。但是,如果仅在 cppreference 上检查它,则可能会错过上下文,因为在那里交叉引用它可能并不容易。

关于c++ - C++20 概念 bool 可测试的奥秘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66938439/

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