Существует несколько способов НЕ использовать многоточие.
Почему? Из-за типобезопасности а опасные манипуляции примитивов (va_start
, va_arg
, va_next
), что вы не можете действительно вперед к другой функции и т.д ...
Однако, в отличие от C, C++ предоставляет методы шаблонов, которые предлагают безопасность типа и общее поведение, и это может совмещаться с перегрузками:
template <typename Arg0>
void foo(int num, Arg0 const& arg0);
template <typename Arg0, typename Arg1>
void foo(int num, Arg0 const& arg0, Arg1 const& arg1);
// ... etc
Это текущее состояние искусства, которое, как правило, помогли с помощью тонкого применения Препроцессор программирования (проверить Boost.Preprocessor).
С нового стандарта C++ 0x, приходят VARIADIC шаблоны, которые предлагают одни и те же объекты, чем методы С переменным числом, с типом безопасности, предлагаемой (Yeeha)
template <typename Arg0, typename... Args>
void foo(Arg0 arg0, Args... args)
{
// Do something with arg0
foo(args);
}
template <typename Arg0>
void foo(Arg0 arg0)
{
// Do something with arg0
}
Это также позволяет определить tuple
классы гораздо проще:
Тема с ошибками слова – leppie
@leppie: Исправлено. –