Задача:
Вопрос:
Может, нужно использовать другие инструменты для этой задачи? Подскажите пожалуйста какие(просьба, вариант с ostream не предлагать)?
template<typename ... Arguments>
void tfunc(const Arguments & ... args)
{
std::stringstream ss;
//ss<<args;
}
Это легко делается при помощи fold expression:
template<typename ... Arguments>
void tfunc(Arguments const & ... args)
{
std::stringstream ss;
(ss << ... << args);
}
online compiler
Вы можете воспользоваться временным массивом для распаковки пакета параметров.
template<typename ... Args>
std::string foo(Args const & ... args)
{
std::stringstream ss;
using arr_t = int[sizeof...(args)];//Тип массива для удобства
arr_t{((ss << args << ' '), 0)...};//Создаем временный массив
return ss.str();
}
Ну, например, так:
void tfunc(stringstream&)
{}
template<typename T, typename ... Arguments>
void tfunc(stringstream& s, T t, Arguments ... args)
{
s << t << " ";
tfunc(s,args...);
}
int main(int argc, const char * argv[])
{
stringstream s;
tfunc(s,1,0.5,",,,");
cout << s.str() << endl;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей