Сделать вывод аргументов в шаблонном методе из списка параметров

    #include <iostream>
#include <stdarg.h>
using namespace std;

template<class ... Arg>
class PrintArguments {
public:
    void DisplayCMD(const Arg&... args) const {
        va_list vl;
        constexpr auto sizeArgs{ sizeof...(Arg) };
        cout << "Arguments size:\t" << sizeArgs << endl;
        for (size_t i = 0; i < sizeArgs; i++)
        {
            cout << args[i] << endl;
        }
    }
};

void main()
{
    const char ch = 'H';
    PrintArguments<int, double, float, char> print;
    print.DisplayCMD(2, 2.5, 2.87f, ch);
}

Ответы (1 шт):

Автор решения: Terabiterr
    #include <iostream>
using namespace std;
// must have C++ 17
template<class ... Arg>
class PrintArguments {
public:
    void DisplayCMD(const Arg&... args) const {
        constexpr auto sizeArgs{ sizeof...(Arg) };
        cout << "Arguments size:\t" << sizeArgs << endl;
        (cout << ... << args); // Expression
    }
};

int main()
{
    const char ch = 'H';
    PrintArguments<int, double, float, char> print;
    print.DisplayCMD(2, 2.5, 2.87f, ch);
}
→ Ссылка