Typowy przykład:Czy można bezpiecznie używać listy va_list w podatnym na wyjątki kodzie?
void foo(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
// might throw, might not. who knows.
bar(fmt, args);
// uh-oh...
va_end(args);
}
Czy to zły pomysł, to jest to rzadkością, aby korzystać va_list
w C++? Jeśli zapakuję bar
w try-catch, czy to pomoże? Jakie byłyby alternatywy?
Listy parametrów zmiennej długości IMHO są złym pomysłem. Spójrz na model 'iostream' dla rozsądnego rozwiązania. –
Po prostu zapakuj w try/catch i powinno być "bezpieczne". – jmucchiello
@EdHeal Listy parametrów zmiennej długości są w porządku, o ile są one implementowane przy użyciu szablonów variadic. –