2026-08-25
print_csv.cpp
#include <iostream>
template <typename... Args>
void print_csv(const Args&... args) {
// write this: print every argument separated by ", " (no trailing
// separator), using a fold expression — not a loop or recursion
}
print_csvを、畳み込み式を1つ使って実装してください。ループや再帰は使わないこと。
Reference
template <typename... Args>
void print_csv(const Args&... args) {
const char* sep = "";
((std::cout << sep << args, sep = ", "), ...);
std::cout << '\n';
}
畳み込みの各要素は「区切りを出力してから引数を出力し、区切りを", "に更新する」という2つの動作をカンマ演算子でつないだ式です。カンマ演算子は常に左を先に評価すると決まっているので、パックの並び順どおりに実行されます。最初の要素だけsepが空文字列なので、先頭に余計な区切りが付きません。これは参考実装であり、唯一の正解ではありません。