static_assert( __cplusplus > 2020'99 ); #pragma once #include namespace Alepha::Hydrogen::IOStreams ::detail:: EnableExceptions_m { inline namespace exports { class EnableExceptions; } class exports::EnableExceptions { private: std::ios *ios; std::ios_base::iostate oldState; public: ~EnableExceptions() { ios->exceptions( oldState ); } explicit EnableExceptions( std::ios &ios ) : ios( &ios ), oldState( ios.exceptions() ) { ios.exceptions( std::ios_base::badbit | std::ios_base::failbit ); } }; } namespace Alepha::Hydrogen::IOStreams::inline exports::inline EnableExceptions_m { using namespace detail::EnableExceptions_m::exports; }