- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码:
struct Foo{
int sum;
Foo() : sum(0) {}
Foo(int x) : sum(x) {}
Foo bar(int x){
return Foo(sum + 1);
}
Foo bar(std::vector<int> x){
return Foo(sum + 1);
}
Foo bar(const char* str){
return Foo(sum + 1);
}
};
template <typename ... T>
int foo(T ... args){
Foo foo;
//(foo.bar(args), ...);
return foo.sum;
}
int main() {
foo(1, 2, "hello", std::vector<int>());
return 0;
}
我想创建这样的调用层次结构:
Foo foo;
foo = foo.bar(1);
foo = foo.bar(2);
foo = foo.bar("hello");
基于可变参数模板参数args
。
我正在查看折叠表达式,但这似乎没有按照我的需要工作。我可以折叠要单独调用的方法,但无法根据前一个方法的结果调用下一个方法。
有什么办法可以做到这一点吗?
最佳答案
您可以使用折叠表达式。
((foo = foo.bar(args)), ...);
我们需要在赋值周围添加一个额外的 ()
以使编译器接受语法。我假设这就是你想要的?我真的不知道代码应该做什么......
编辑:正如@AVH 所指出的,在这里进行左折或右折将会对顺序产生影响。上面的右折叠将从最后一个参数开始调用成员函数,并向后执行。左折可能就是您想要的,但会起到相反的作用。
(..., (foo = foo.bar(args)));
编辑 2:最后发现逗号运算符强制从左到右求值,因此在这种情况下,我们如何折叠表达式实际上并不重要。如果我们折叠 之外的其他东西,
可能会很重要。
关于C++17 - 可变模板参数 - 使用模板参数调用先前返回值的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66857629/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!