首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >概念TS在cppreference.com上的示例代码是否出错?

概念TS在cppreference.com上的示例代码是否出错?
EN

Stack Overflow用户
提问于 2020-04-08 03:26:37
回答 1查看 1.6K关注 0票数 0

下面的代码摘自cppref

代码语言:javascript
复制
#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编译:

代码语言:javascript
复制
[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的文档错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 03:38:44

C++生态系统中的许多东西都是Cppreference站点的文档。其中有些是标准的一部分,有些是技术规范的一部分。后者在URL中都有“实验性”(很明显,在页面顶部有一个大的警告文本框),并且只应该在您使用有问题的TS时使用。在这种情况下,采用了C++20核心语言特性的概念TS。

这两种语言(概念TS和C++20)有足够的区别,即针对其中一种编写的代码不太可能与另一种编译器兼容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61092861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档