Re[2]: Как всегда две идеи :)
От: Zigmar Израиль  
Дата: 18.02.07 11:13
Оценка:
Здравствуйте, 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
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Re[3]: Как всегда две идеи :)
От: Erop Россия  
Дата: 18.02.07 11:33
Оценка:
Здравствуйте, Zigmar, Вы писали:

Z>А еще можно перегрузить "оператор запятая", как это делают в boost assign:

Z>http://www.boost.org/libs/assign/doc/index.html
Z>
+1

Да можно, просто тут Sutter'а за что-то очень любят, а он вроде строго не велит перегружать оператор "запятая"

Хотя и с запятой тоже можно, конечно.
Но тут я с Сатром согласен наверное. ИМХО с запятой непонятнее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: функции с переменным числом аргументов, но без фиксир
От: LuciferMoscow Россия  
Дата: 18.02.07 14:43
Оценка:
Здравствуйте, 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>>
Re[10]: функции с переменным числом аргументов, но без фикси
От: Chegermek  
Дата: 19.02.07 04:51
Оценка:
Здравствуйте, 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>}

а изначальный вопрос то и не прочитал! Ты предлагаешь стандартный метод, который требует наличия хотябы одного аргумента, а интересует возможность вызова вообще без аргументов
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.