问题标签 [fold-expression]
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.
c++ - 我可以在这个例子中使用折叠表达式吗
我想知道是否可以在下面的示例中使用折叠表达式(以及如何编写它)。
我试过到目前为止,但我没有弄清楚!
谢谢你。
c++ - 赋值中的折叠表达式
我正在尝试使用折叠表达式来简化一些代码。在以下代码中,我试图将元素插入到数组中,但折叠表达式无法编译
编译器抱怨缺少';'
c++ - 使用折叠表达式初始化静态 constexpr 类数据成员无法编译
即使非常相似的代码可以编译,我也对无法编译的特定代码感到困惑。
这不会编译:
具有启发性的错误1>c:\...\source.cpp(5): error C2059: syntax error: '...'
。
这编译:
这也编译:
我在 Visual Studio 15.9.8 中使用 MSVC++ 进行编译。我错过了什么?
编辑:我正在用/std:c++17
标志编译。尝试/std:latest
没有帮助。
c++ - 是否有理由使用 std::conjunction/std::disjunction 而不是“&&”/“||”上的折叠表达式?
是否有任何特定情况您不能正确使用std::conjunction
/std::disjunction
并且不使用更“基本”(即语言功能而不是库功能)折叠表达&&
/ ||
?
例子:
对比
使用折叠表达式的版本更简短,通常更易读(尽管对此可能有不同的看法)。所以我不明白为什么将它与折叠表达式一起添加到库中。
c++ - 从折叠表达式创建一个带分隔符的字符串
我有以下功能:
它可以完美地将参数连接成一个字符串,但正如预期的那样,它给出的输出没有任何分隔符。是否有可能以某种方式分隔输入?
样本输出:
elg.Debug("asd", "qwe", 123);
// 打印:asdqwe123
// 应该打印类似的东西:asd qwe 123
我是否必须为此推出自己的字符串流替换?
c++ - 折叠表达式与编译递归
我们c++17
有折叠表达式,它可以极大地简化可以使用编译器递归和 SFINAE 或重载来实现的代码。例如,在下面的代码中
该c++17
函数printer
(取自cpp 参考c++11
)的工作与其版本完全相同printer_cpp11
。
在编译时,会生成函数的几个重载,而使用折叠表达式需要printer_cpp11
一个函数。printer
c++11
在使用 fold 表达式而不是-style时在性能方面有优势吗?或者可以假设编译器内联 的所有重载printer_cpp11
,从而创建具有同等性能的代码?
c++ - 折叠表达式和 cout
我有以下有效的代码,但我对它的工作原理感到困惑。
输出:
123
我的困惑:
我希望打印 321。
我想要这个订单:
但我无法编译...
c++ - 当构造函数自行解压可变参数模板类?
这是我上一篇文章的后续。我已经成功地设置和获取类的值。但是,现在我试图更进一步,让构造函数将自己作为参数。但是,我不确定如何正确解压缩它。
我努力了:
但是,在这种情况下,classes was not declared in this scope
当我尝试将其传递给初始控制器构造函数时会出错。我也尝试过注释掉的模板声明,但是我认为这也不正确。我也尝试过Controller&...controllers(Classes&...)...) : (Controller(Classes&...classes));
,但这也不起作用。
我真的不知道接下来要尝试什么,或者我所要求的是否可以做。或者,如果我将整个班级模板化,这可能会更容易。我只是想避免Controller<A,B> controller(A,B);
,而只是创建Controller controller(A,B)
. 但是,我理解是否必须以其他方式进行。
编辑:我应该澄清我正在尝试做的事情:
然后,这将设置所有类的所有值并获取控制器内所有类的值。
c++ - 在使用声明引入的折叠表达式中使用运算符是否合法?
我正在尝试在折叠表达式中使用任意函数,当我发现以下代码可以gcc
用clang
.
似乎clang
没有考虑重载运算符,而是尝试>>=
在折叠表达式中使用正则运算符。
但是,如果改为拼写折叠表达式,clang
则考虑重载运算符并且编译得很好:
这是一个clang
错误吗?或者折叠表达式的拼写等价不完全等价?