C++11 には可変個引数テンプレートがありstd::forward
、次のコードのように引数を指定できます。
#include <utility>
#include <iostream>
#include <string>
void printVariadic()
{}
template<typename T, typename... Args>
void printVariadic(T&& arg, Args&&... args)
{
std::cout << arg << "\n";
printVariadic(std::forward<Args>(args)...); // here we forward the arguments
}
しかし、C++17 ではフォールド式があります (私の理解では、最後の引数まで再帰的な関数呼び出しは行われません)。
template<typename ... Args>
void print(Args ... args)
{
((cout << args << "\n"), ...); // did we here miss the part of `std::forward`?
}
オンラインの例ではstd::forward
、fold 式が使用されている場合、引数の ing が表示されませんでした。
フォールド式で引数を転送できますか? それとも、まったく必要ありませんか?
ばかげた初心者の質問かもしれませんが、それでもオンラインで答えを見つけることができませんでした。