такого вида:
void smth123(...);
Могу ли я внутри функции smth вызвать функцию smth123 и передать все параметры под ...? Например такого плана не работает:
void smth(std::vector vector, ...)
{
smth123(...);
}
читайте про variadic templates
А тут ... Что обозначает?
С variadic templates не выйдет, эти функции представляют из себя отдельную библиотеку, и на этапе компиляции этой библиотеки не известно, какие будут аргументы у функций. Я думал делать макросы, но это не совсем то
но у него эллипс а не темплейт
Аргументы, которые могут быть чем угодно
если это и правда не псевдокод а там прям элипсис, то без макросов никак всё равно
То есть это С-шный элипсис?
Тогда вторая твоя функция не валидная, у функции с элипсисом хотя бы один аргумент обязан быть
Это псевдокод, у второй функции есть еще аргумент, для упрощения не указал его просто)
Так что ответ - нет, не можешь. Ты можешь из элипсиса разобрать аргументы и вызвать с ними функции с фиксированным числом аргументов.
Тогда давай не псевдокод. Я ж специально спросил...
Но и это ты не можешь сделать.
В функции с элипсисом ты обязан разобрать все параметры на переменные. Передать их в другую функцию возможности нет. С вариадик шаблонами другое, там есть, но это шаблоны
Это жаль, ну что поделать, буду искать другие варианты
Мне кажется, решать что-бы то ни было с помощью элипсиса — крайне сомнительная идея. Почему бы не определить некоторый интерфейс, который должны поддерживать аргументы smth123 и не передавать их в каком-нибудь контейнере? Вы же не совершенно несвязанные типы собираетесь передавать?
Ну так поставляй хедеры, в чем проблема?
Обсуждают сегодня