Решил я сегодня первый раз воспользоваться функцией
std::from_chars и не понял как правильно проверять результат вызова.
Дело в том, что в случае успеха "ec is value-initialized", где ec это поле from_chars_result:
struct from_chars_result {
const char* ptr;
std::errc ec;
};
При этом std::errc определяется в стандарте как
enum class errc {
address_family_not_supported, // EAFNOSUPPORT
....
При этом в MS компиляторе определение такое:
// ENUM CLASS errc
enum class errc
{ // names for generic error codes
address_family_not_supported = 102, // EAFNOSUPPORT
...
Если я правильно понимаю, "ec is value-initialized" означает инициализацию вида
errc{}.
Внимание вопрос: какое значение будет у ec в случае успешного выполнения?
Я вижу возможные варианты:
1) unspecified
2) undefined behavior
3) 0
4) errc::address_family_not_supported
Так как у errc не указан underlying type, то если я правильно помню, присваивание любого значения лежащего вне перечисленных — это undefined behavior. Это так? Если так, то либо у
address_family_not_supported == 0, либо
errc{} != 0.
Короче: с чем, согласно стандарту, следует сравнивать значение std::errc{} ?