Поскольку вы все равно используете библиотеку файловой системы, вы можете проверить, существует ли файл , прежде чем пытаться получить к нему доступ через поток. Это позволило бы избежать проблем с раздуванием, но не работало бы в том же смысле, что и вы, т. Е. Сам поток не выполнял бы проверку существования.
Однако, поскольку вы используете boost::filesystem::ifstream
, я предполагаю, что вы используете это, потому что вы используете boost::filesystem::path
. В реализации Boost ifstream
они наследуются от std::basic_ifstream
и переопределяют две функции: конструктор и open
. Таким образом, если вы хотите улучшить отчетность об ошибках, вы можете просто сделать то же самое, наследовать от реализации boost и переопределить эти две функции, чтобы обеспечить желаемую проверку. Дополнительный раздув: вероятно, не много, и он включает в себя поведение, которое вы хотите в самом потоке.