Code: Select all
std::stringCode: Select all
std::string_viewCode: Select all
auto const parse_int = [](std::string_view sv, int base = 10) -> int {
int value;
auto result = std::from_chars(&*sv.begin(), &*sv.end(), value, base);
...
Ich habe versucht, einen ähnlichen Code mit &* in einem konstanten Ausdruck auszuwerten, bei dem undefiniertes Verhalten vom Compiler erkannt werden muss:
Code: Select all
static_assert( [] {
const char s[3] = { 'e', 'n', 'd' };
[[maybe_unused]] auto * a = &*(s+3); // ok?
[[maybe_unused]] auto & b = *(s+3); // ok?
return true;
}() );
Mobile version