Здравствуйте, Erop, Вы писали:
E>Идея 2
E>E>class Args {
E> // тут тоже сам догадаешься
E>};
E>void SomeFun( Args );
E>void foo()
E>{
E> SomeFun( Args() << arg1 << arg2 << arg3 );
E>}
E>

А еще можно перегрузить "оператор запятая", как это делают в boost assign:
http://www.boost.org/libs/assign/doc/index.html
Здравствуйте, Zigmar, Вы писали:
Z>А еще можно перегрузить "оператор запятая", как это делают в boost assign:
Z>http://www.boost.org/libs/assign/doc/index.html
Z>
+1
Да можно, просто тут Sutter'а за что-то очень любят, а он вроде строго не велит перегружать оператор "запятая"
Хотя и с запятой тоже можно, конечно.
Но тут я с Сатром согласен наверное. ИМХО с запятой непонятнее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Chegermek, Вы писали:
C>256 аргументов это крайний случай, которого скорее всего никогда не будет, но возможность предусмотрена должна быть, а если создать структуру 256 элементов, то ВСЕГДА прийдется передавать по килобайту памяти.
void Foo(std::vector< boost::any<чего тебе нуно> > )
{
}
или
void Foo(std::vector< boost::variant<чего тебе нуно> > )
{
}
Что-то одно точно подойдет
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Здравствуйте, Sm0ke, Вы писали:
А>>но всетаки интересно ктонить знает как реализовать изначальный вопрос???
S>Либо передать их кол-во
S>S>void some_func(size_t count, ...)
S>{
S>}
S>
S>Либо знать признак конца
S>[ccode]
S>void some_func(int i, ...)
S>{
S> va_list argptr;
S> va_start(argptr, i);
S> while (true)
S> {
S> char * str= va_arg(argptr, char *);
S> if (str == NULL) break;
S> std::cout << str << std::endl;
S> }
S>}
а изначальный вопрос то и не прочитал! Ты предлагаешь стандартный метод, который требует наличия хотябы одного аргумента, а интересует возможность вызова вообще без аргументов