Есть ли способ получить конкретное условие ошибки при открытии потока С++? То есть, не удалось ли это, потому что файл не существовал, или разрешения были неправильными, или т.д. В основном я ищу функциональность, эквивалентную errno для fopen() в простой C.
GCC, похоже, правильно устанавливает errno, но это не похоже на стандарт С++, и я не могу определить, является ли это просто артефактом того, как они реализовали потоки, или преднамеренной функцией (и, следовательно, я не знаю, будет ли он сохраняться в разных версиях).
Есть ли способ получить эту информацию надежно, либо в стандартном С++, либо не случайно в одном или нескольких основных компиляторах?