Я создаю библиотеку для себя, которая содержит функции и макросы для вещей, которые я часто использую и не хочу постоянно перепечатывать или копировать / вставлять (иногда сотни строк). У меня есть кусок кода в старом проекте, который я должен постоянно копировать и вставлять, а затем изменять все имена переменных в соответствии с моим текущим проектом. Я хочу превратить кусок кода в функцию в моей библиотеке.
Большой блок форматов кода выводится в поле, поэтому, если вывод слишком длинный, он не разрушает границы, которые у меня могут быть, или идет прямо к краю консоли (что меня беспокоит). Пользователь пропускает верхний левый угол поля и предоставляет координату x правого края, чтобы текст не проходил. Остальные аргументы являются переменными или литералами, которые должны быть выведены. Кусок кода помещает все переменные и литералы в одну большую строку, которая затем выводится char на char, пока результат не достигнет границы x. Выходные данные затем продолжаются в координате х верхнего левого угла и на одну строку вниз.
Для того, чтобы это работало, функция должна иметь шаблон Varadic, позволяющий получать переменные суммы для нескольких типов выходных данных (аналогично cout << "I have " << 4.5 << " cookies and " << 2 << " friends."
).
Шаблон завершен и работает, пока я не попытаюсь создать массив типа шаблона и инициализировать его.
template<typename ...Inputs>
void textBox(int x, int y, int xBoundary, const Inputs&... things) {
Inputs arr[sizeof...(things)] = {things...};
}
В этот момент я получаю эту ошибку: parameter packs not expanded with '...' Note: 'Inputs'
Я использовал этот тип вещей раньше, но все входы были одного типа для этой функции, поэтому я легко мог сделать это:
template<typename ...Inputs>
void textBox(int x, int y, int xBoundary, const Inputs&... things) {
std::string arr[sizeof...(things)] = {things...};
}
Это не дает ошибок, если, конечно, пользователь не пытается передать что-то кроме строки, поэтому я знаю, что моя ошибка связана с созданием массива типа шаблона. Любая помощь будет оценена!