2011-04-06 10 views

Respuesta

35

Claro, lo más fácil es cuando intentas llamar a std::function que está vacío.

int main() { 
    std::function<int()> intfunc; 
    int x = intfunc(); // BAD 
} 
+0

Acabo de hacer una búsqueda y no solo es su ejemplo el más fácil, también parece el * único * ejemplo! :-) –

+0

@Howard: ¿De verdad? Entonces, ¿cómo [esta respuesta] (http://stackoverflow.com/questions/5556183/make-c-crash-without-casting/5557843#5557843) arroja un 'bad_function_call'? –

+4

Mi mejor estimación es que la respuesta a la que se hace referencia se reduce al mismo caso que la respuesta de DeadMG aquí: llamar a un 'estándar' vacío 'función'. Lo sentimos, actualmente no puedo probar el código lambda. Comprobé dos veces la última especificación lambda y no puedo encontrar nada allí que arroje 'bad_function_call'. Volví a buscar el último borrador de 'bad_function_call', teniendo cuidado de detectar los casos en los que' bad_function_call' podría estar dividido en guiones, y no encontré ningún otro caso en el que se lanzó. Aún así es posible que me haya perdido uno. Si lo encuentra, publique un puntero para nosotros. –

2

"Realización de una llamada de función sin tener un destino para llamar lanza una excepción de tipo std :: bad_function_call"

std::function<void(int,int)> f; 
    f(33,66); // throws std::bad_function_call 

No hay créditos a mí .... su Nicolai Josuttis Pundit de C++ Estándar Lib

+1

¡El intercambio de pila no toma el código adjunto "<>"! El contenido dentro del código "<>" no es visible. Antes de apedrearme hasta la muerte ... ahem ... std :: function f; f (33,66); // throws std :: bad_function_call –

0

en mi caso era el problema estaba en la lista de captura. tengo una función lambda recursiva.

//decl 
std::function<void(const SBone*, const core::vector3df&, const core::quaternion&)> f_build; 
f_build = [&f_build](const SBone* bone, const core::vector3df& pos, const core::quaternion& rot) 
{ 
... 
} 

falta & de f_build en la lista de captura de generar una mala decisión.

Cuestiones relacionadas