variadic templates

255
20 июля 2018, 06:10

Имеется шаблонная функция, принимающая строки

template<typename... Args>
void foo(const std::string& function, const Args&... args)
{
    PGresult* exec_result = nullptr;
    size_t param_count = sizeof...(args);
    const char** param_pack = new const char*[param_count];
    std::vector<std::string> argsv = {args ...};
    for (size_t i = 0; i < argsv.size(); ++i)
    {
        param_pack[i] = argsv[i].c_str();
    }
...

Как сформировать массив указателей на содержимое строк без вектора?

UPD1: Я извиняюсь за неточно поставленный вопрос.

Возможно ли получить массив указателей на содержимое строк не создавая промежуточных контейнеров (vector/array...), а итерируясь напрямую по args

Answer 1

см. Brace-enclosed initializers на cppreference.

template<typename... Args>
void foo(const std::string& function, const Args&... args)
{
    ...
    const char* param_pack[] = { (args.c_str())... };
    ...
}

Ссылка на пример

READ ALSO
Как соединить два и более std::stringstream

Как соединить два и более std::stringstream

Возможно ли записать два и/или более std::stringstream в один?

256
Чтение string из бинарного файла при помощи QDataStream

Чтение string из бинарного файла при помощи QDataStream

Осваиваю qt, нужно реализовать запись структуры worker из текстовых полей в бинарный файл workersdat а затем считать все записи из этого файла и вывести...

274
Можете ответить на вопросы по поводу web.xml в javaEE, там про аутентификацю?

Можете ответить на вопросы по поводу web.xml в javaEE, там про аутентификацю?

Щас дошёл до темы в webxml - аутентификация пользователей и есть пару вопросов: 1) Ест такой код:

249