第一次发布,如果格式不佳,抱歉。前几天,我第一次遇到折叠表达式,并且正在尝试使用它们。但是,我所有的尝试都未能编译。我将其归结为以下内容:
//test.cpp
template<typename... types>
auto adder(types&... args){
return (args+...);
}
int main(){return 0;}
然后我用
进行了编译g++ -std=c++17 test.cpp
它会产生以下错误:
testCode.cpp: In function 'auto adder(types& ...)':
testCode.cpp:5:15: error: expected primary-expression before '...' token
return (args+...);
^
testCode.cpp:5:15: error: expected ')' before '...' token
testCode.cpp:5:18: error: parameter packs not expanded with '...':
return (args+...);
^
testCode.cpp:5:18: note: 'args'
从我所看到的一切来看,这应该是可行的,因此,如果有人可以告诉我我在做什么错,我将不胜感激。
我正在使用xenial linux(在chrome OS上为crouton)和全新安装的g ++。
答案 0 :(得分:0)
也许是这样吗?
#include <string>
#include <iostream>
using namespace std::literals;
template<typename... T>
auto add(const T&... args) {
return (args + ...);
}
int main() {
std::cout << add(1,2,3,4) << "\n";
std::cout << add("a"s, "b"s, "c"s) << "\n";
return 0;
}
答案 1 :(得分:0)