Zakładając piszemy bibliotekę i że chcemy, aby zapewnić precyzyjną kontrolę nad ziarna błędu i wyjątki:W jaki sposób powinniśmy wdrożyć API kompatybilne ze std :: error_code?
void foo();
void foo(std::error_code&);
sould wdrożymy foo()
jak rzucanie std::system_error
i niech foo(std::error_code&)
złapać wszystkie wyjątek i rozpakowania kod_błędu.
Czy możemy zaimplementować foo(std::error_code&)
jako funkcję nigdy nie rzucającą i rzucać funkcją w foo()
w zależności od obecności kodu błędu?
Zobacz na przykład :: :: asio. http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference/basic_stream_socket/connect.html – ForEveR
Powiedziałbym, że zależy to również od tego, co robi 'foo()'. – netcoder