Qui:cos'è una funzione 'valida' std ::?
http://en.cppreference.com/w/cpp/utility/functional/function
operator bool
è descritto: "Verifica se l'oggetto callable memorizzata è valida".
Presumibilmente un valore predefinito std::function
non è valido ma è l'unico caso?
Inoltre, come viene verificato se è valido?
È il caso in cui operator()
solleva std::bad_function_call
esattamente nel caso in cui l'oggetto non sia valido?
OK, quindi il controllo di validità è solo il controllo del tipo e chiamare un predefinito costruito 'std :: funzione' è esattamente il caso in cui' std :: bad_function_call' è sollevato, sì? – dpj
@ user710408: Non so cosa intendi per "il controllo di validità è solo il controllo del tipo". La validità (ora assumendo la definizione "ha un obiettivo") è determinata in fase di esecuzione, il controllo dei tipi avviene in fase di compilazione. E la chiamata a una funzione errata si verifica quando la funzione non è valida (non ha una destinazione), sia quella di default o assegnata esplicitamente a 'nullptr'. – GManNickG
Non penso di sapere cosa volevo dire! Grazie :) – dpj