std::vector コンテナーを連結するために、次の構文の使用を提案するこの post variadic テンプレート関数に出くわしました。
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 を代入すると、これらの値もそれぞれ問題なく機能しました。
それで、誰かがこのテクニック/構文の名前と、上の2行で正確に何が起こっているのか教えてもらえますか? 関連するSOの投稿を見逃していた場合は、ご指摘いただきありがとうございます。