#include #include #include #include #include #include struct streambuf_test : public boost::iostreams::device { std::streamsize read(char* s, std::streamsize n) { throw std::runtime_error("works !"); } }; template void test_it(T& t) { try { char buf[100]; t.read(buf, 100); std::cout << "failed !" << std::endl; } catch(const std::exception& e) { std::cout << e.what() << std::endl; } catch(...) { std::cout << "weird error !" << std::endl; } } int main() { streambuf_test sb; boost::iostreams::stream stream(sb); std::cout << "testing streambuf_test... "; test_it(sb); std::cout << "testing boost::iostream... "; test_it(stream); }