【发布时间】:2020-04-08 03:26:37
【问题描述】:
以下代码摘自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的文档有错吗?
【问题讨论】:
-
您正在查看 TS。 Here'sc++20 里有什么
-
你能在这里找到答案吗stackoverflow.com/questions/60684179/…
-
选择的答案很明确。
-
不,不是。只是clang-10没有实现Concepts TS,clang-10实现了C++20的概念。
-
我们甚至在那个页面上有一个很大的免责声明框...
标签: c++ clang standards c++20 c++-concepts