Hacker News new | ask | show | jobs
by maccard 1064 days ago
C++ got this wrong, again. The default usage should be safe, with an escape hatch, i.e. deref operator should be safe and value() should be unsafe.

Ideally, a sufficiently smart compiler would be able to see code like

    if (auto t = get_optional())
    {
        do_something(*t);
    }
And elide the double safety check, but because optional is a library feature not a language feature, the compiler needs to detect general usages of that pattern rather than specifically optimising for a language level construct. That's another place c++ is going in the wrong direction in...
1 comments

The default option is high performance and less verbose.
The default option is dangerous and vulnerable being incorrect unless you explicitly use it in a different way. This is a symptom of it being a library and not a language feature.

As another example, imagine if span was a language feature. A compiler could bounds check at compile time, and fully elide the checks at runtime in many scenarios (like in a loop over the span).