cppreference.com 上的 Concepts TS 示例代码是否有误?

Is this sample code for Concepts TS on cppreference.com wrong?

以下代码摘自cppref:

#include <string>

using namespace std::literals;

template<typename T>
concept bool EqualityComparable = requires(T a, T b)
{
    {
        a == b
    }
    ->bool;
};

void f(EqualityComparable&&) {}

int main()
{
    f("abc"s);
}

但是不能用clang-10编译:

[root@mine ~]# clang++ -std=c++20 -stdlib=libc++ main.cpp
main.cpp:6:14: warning: ISO C++20 does not permit the 'bool' keyword after 'concept' [-Wconcepts-ts-compat]
concept bool EqualityComparable = requires(T a, T b)
        ~~~~~^
main.cpp:11:7: error: expected concept name with optional arguments
    ->bool;
      ^
main.cpp:14:8: error: unknown type name 'EqualityComparable'
void f(EqualityComparable&&) {}
       ^
1 warning and 2 errors generated.

是不是cppref的文档写错了?

Cppreference 站点记录了 C++ 生态系统中的许多内容。其中一些是标准的一部分,其中一些是技术规范的一部分。后者在 URL 中都有 "experimental"(显然在页面顶部有一个大警告文本框),并且只有在您使用相关 TS 时才应使用。在这种情况下,概念 TS,从中采用了 C++20 核心语言特性。

这两者(Concepts TS 和 C++20)有足够的差异,以至于针对一个编写的代码极不可能与另一个的编译器兼容。