Skip to content

Conversation

thbeu
Copy link

@thbeu thbeu commented Sep 10, 2025

No description provided.

```

Though the C++17 standard has you do a comparison with `std::errc()` to check whether the conversion worked, you can avoid it by casting the result to a `bool` like so:
You can simplify the conversion success check by casting the result of `from_chars` to `bool`, as shown below:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original text sounds clunky but it makes an important point that this edit removes. The C++17 standard does not include this cast to bool. It's important for users to know that it is a fast_float extension.

The cast to bool only became standard in C++26. https://en.cppreference.com/w/cpp/utility/from_chars_result.html

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, there is still room for improvement. The point is that I did not understand the actual purpose of the original statement. Neither does it mention C++26.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original wording is valid English, but how about:

In C++17, to check whether the conversion succeeded, you must compare the ec member to std::errc(). As an extension, fast float supports the C++26 feature that allows you to cast the result to bool, like so:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's easier to comprehend for non-native English speakers. So what about C++20 then?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything else in that document talks about C++17 from_chars, and I think it should be obvious that unless stated otherwise, the same API is present in C++20 and C++23.

Copy link
Author

@thbeu thbeu Sep 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about this?

Whereas before C++26 std::from_chars needs to be explicitily compared with std::errc() to check for conversion success, fast_float::from_chars simplifies the check as shown below:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from_chars is a function, you don't compare it to std::errc(), and you don't even compare its return value to std::errc(), so I don't think that's good.

"to check for a successful conversion" would be better than "to check for conversion success".

I don't think there's a problem with simply referring to C++17 as the standard that defined the from_chars feature, but if you insist, then maybe:

Prior to C++26, checking for a successful std::from_chars conversion requires comparing the from_chars_result::ec member to std::errc(). As an extension fast_float::from_chars supports the improved C++26 API that allows checking the result by converting it to bool, like so:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants