fold-expression相关内容

从一组特征创建模板包

是否可以(如果可以,如何)从一组索引的类型特征生成模板包,以便它们可以用于实例化变体或元组? #include 模板结构 IntToType;模板struct IntToType{使用类型 = int;static constexpr char const* name =“int";//其他编译时元数据};模板struct IntToType{使用类型 = 双;static conste ..
发布时间:2021-09-16 19:01:39 C/C++开发

在 C++ 中迭代类继承

假设我有一个类架构(类的数量在开发期间不断增加),每个类都继承自 N 个具有相同基本接口的类.创建将迭代继承的基函数(在基类或派生类中)的最佳方法(如果可能)是什么? 目标:避免开发人员的错误,并确保我们不会忘记从所有继承中调用所有基本函数使代码更清晰易读. 请查看更新状态的编辑说明 简短示例: class shared_base {上市:虚拟无效功能()= 0;}类 base ..

我可以使用折叠表达式实现max(A,max(B,max(C,D)))吗?

在尝试使用C ++ 17折叠表达式时,我尝试实现max sizeof ,其中结果是类型的 sizeof 的最大值.我有一个使用变量和lambda的丑陋折叠版本,但是我无法想到一种使用折叠表达式和 std :: max()来获得相同结果的方法. 这是我的折叠版本: templateconstexpr size_t max_sizeof(){size_t m ..
发布时间:2021-04-20 18:58:44 C/C++开发

在C ++ 17中解压缩可变参数元组

在c ++ 17(也许是C ++ 2a)中,有什么比用结构化绑定?有什么提示吗?我可以接受一个答案,为什么我不能在这里使用这些提到的C ++ 17功能-但我更喜欢“解决方案". 解决方案 自C ++ 14起,我们具有通用的lambda,而自C ++ 17起,我们具有有效的折叠表达式和 std :: apply 隐藏通常的拆包逻辑: std :: apply([](auto& ... i ..

用折叠表达式填充数组时的语法问题

是的,我可以使用 std :: initializer_list 。是的,甚至更容易,我可以进行聚合初始化。但这如何工作?我似乎无法将C ++ 17的fold表达式折叠起来。没有足够的例子。 这是我想出的内容: template struct foo { T arr [N]; template ..
发布时间:2020-09-28 02:13:36 C/C++开发

折叠表达式的关联性

提出的 N4191 fold表达式到C ++。其定义是 (args + ...) 是左折叠(即(((a0 + a1)+ a2)+ ...) ,以及 (... + args) 是一个右折叠(即(... +(a8 +(a9 + a10))) ,修订文件 N4295 问题:什么是理由?这似乎更直观(至少当你使用从左到右的字母表)从左到右评估(args ..
发布时间:2016-10-23 14:03:44 C/C++开发