Namaran

Code daily. Without assist.

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が空文字列なので、先頭に余計な区切りが付きません。これは参考実装であり、唯一の正解ではありません。