Supponendo stiamo scrivendo una libreria e che vogliamo fornire un controllo a grana fine nel corso degli errori e delle eccezioni:Come dovremmo implementare l'API compatibile std :: error_code?
void foo();
void foo(std::error_code&);
Sould abbiamo implementare foo()
come gettare un std::system_error
e lasciare foo(std::error_code&)
fermo tutto eccezione e estrarre l'error_code.
Oppure è possibile implementare foo(std::error_code&)
come una funzione di non lancio e inserire una funzione in foo()
in base alla presenza di un codice di errore?
Guarda boost :: asio per esempio. http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference/basic_stream_socket/connect.html – ForEveR
Direi che dipende anche da cosa 'foo()' fa. – netcoder