问题标签 [c++-ts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
215 浏览

c++ - 为什么 C++ Concepts TS 中同时存在变量和函数概念?

我一直在查看在 GCC 6 中实现的 C++1z N4377概念 TS 草案,但我不明白拥有两种不同概念的目的:变量概念和函数概念。

功能概念草案的相关部分是[dcl.spec.concept (5.4)]

  • 声明应具有等效于{ return E; }where Eis a constraint-expression (14.10.1.3) 的函数体。

对于可变概念,在下一段 [(6.3)] 中:

  • 初始化程序应该是一个约束表达式

有什么他们中的一个可以做而另一个不能做的吗?如果没有,是否有理由同时包含两者?

注意:最新的草案,P0121R0在这方面没有任何改变

0 投票
0 回答
43 浏览

c++ - TS Concepts - 带括号的概念的优点

有人能解释一下为什么这两个(稍微)不同的代码片段工作方式相似吗?
使用其中一个有什么优势吗?

#1 一种方式

#2 其他方式

第二个示例使用括号可交换并返回“要求”的原因是什么?

可能的主要:

0 投票
1 回答
224 浏览

c++ - 是否被认为是实验性的 - 静态反射功能包括对父类的迭代?

研究有关可能的新 TS 功能的信息,我发现静态反射被认为是添加的。总结会议提案的文件收集了有关提案实际打算引入的内容以及作者认为不应添加的信息:

  • 支持的:
    • 数据成员(例如迭代成员变量)
    • 成员类型(typedefs/using 声明)
    • 枚举器
    • 模板实例化
    • 别名支持
  • 不支持
    • 命名空间成员序列
    • 职能
    • 类模板
    • 构建新的数据类型
    • C++ 中已有的反射功能
    • 匿名函数
    • 属性

我的第一个想法是非常基本的反射元素 - 遍历父类,既不包含在支持列表中,也不包含在不支持列表中。确实没有提案要求添加这个吗?

0 投票
1 回答
53 浏览

c++ - 范围 TS 中的类模板参数 Proj 和类模板 IndirectUnaryPredicate 的用途是什么?

Cpp-reference显示了(实验)范围 TS 中的以下函数模板(除其他外):

模板参数可以与什么Proj结合使用IndirectUnaryPredicate

0 投票
1 回答
167 浏览

c++ - 你应该如何创建一个 std::experimental::observer_ptr 到一个不能改变它指向的值的非常量对象?

这是创建一个不能改变它指向的值std::experimental::observer_ptr的非对象的规范方法吗?const

https://godbolt.org/z/h3Uq0o

编辑:

如果指针已经存在(我认为这是更常见的用例)怎么办?我们必须这样做const_cast吗?

https://godbolt.org/z/NbR6Nj

0 投票
0 回答
408 浏览

c++ - C++:是否可以将协程对象的指针传递给协程本身内部的另一个函数?

如果我的措辞不清楚,这是代码。

我现在能想到的几个解决方案要么是在生成协程时初始挂起并将指针存储在任意结构中并从该存储的结构中传递,要么在第一次等待时等待可恢复的指针。但我觉得有更清洁的方法可以做到这一点..有吗?

0 投票
0 回答
153 浏览

c++ - 为什么 co_await for 循环没有在 C++20 中提供?

我从 github 存储库的 cppcoro 库中看到了这段代码:

其中async_generator产生一个值 while 可以co_await和协程consumer具有for co_await其中的等价性:

根据协程 TS 草案:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4775.pdf

for co_awaitC++20 不发货的原因是什么?

0 投票
0 回答
91 浏览

c++ - 对 std::experimental::net 的未定义引用

代码是这样的

我尝试通过 tdm-gcc 10 、fedora g++ (GCC) 11.2.1 和 g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 编译它。它们都失败了,输出如下:

他们怎么了?我的编译器选项是 '-std=gnu++2a' 或 '-std=c++2a',两者都不起作用。