La recursión de la cola no ocurre
Estoy usandog++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
en un proyecto C ++. Escribí una función que hace esto:
template<typename T, T (*funct)(int) >
multiset<T> Foo(const multiset<T>& bar, int iterations) {
if (iterations == 0) return bar;
multiset<T> copy_bar(bar);
T baz = funct(copy_bar.size());
if (baz.attr > 0)
return Foo<T,funct>(copy_bar, 100);
else
return Foo<T,funct>(bar, iterations - 1);
}
Yo estaba consiguiendobad_alloc() exception
así que probé la función congdb
y resulta que no está ocurriendo una recursión de cola, lo que esperaba ya que no hay declaraciones después delreturn
s.
NOTA: Intenté con el indicador de compilación -O2 pero no funcionó