我遇到了这个 post variadic template function to concatenate std::vector 容器,建议使用以下语法:
template<typename T>
void append_to_vector(std::vector<T>& v1, const std::vector<T>& v2) {
std::cout << v2[0] << std::endl;
for (auto& e : v2) v1.push_back(e);
}
template<typename T, typename... A>
std::vector<T> concat_version3(std::vector<T> v1, const A&... vr) {
int unpack[] { (append_to_vector(v1, vr), 1)... };
(void(unpack));
return v1;
}
我开始玩弄它以了解它是如何工作的,因为我还没有看到这个:
int unpack[] { (append_to_vector(v1, vr), 0)... };
(void(unpack));
似乎这是某种动态生成的初始化列表,也有副作用?我也对0
以上无关紧要的事实感到困惑。我替换了 -1 和 5,这些值中的每一个也都工作得很好。
那么有人可以告诉我这种技术/语法的名称以及上面两行中到底发生了什么吗?如果我错过了相关的 SO 帖子,我将非常感谢任何指点并道歉。