2

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 が表示されませんでした。

フォールド式で引数を転送できますか? それとも、まったく必要ありませんか?

ばかげた初心者の質問かもしれませんが、それでもオンラインで答えを見つけることができませんでした。

4

1 に答える 1