▲ | BeetleB 4 days ago | |
> but it's a run-time check And that's the problem. In other languages that have a Maybe type, it's a compile time check. If your code is not handling the "empty" case, it will simply fail to compile. I honestly don't see any value in std::optional compared to the behavior pre-std::optional. What does it bring to the table for pointers, for example? | ||
▲ | fluoridation 4 days ago | parent [-] | |
Nothing, but I don't think anyone uses std::optional<T *>. However, if you need to specify an optional integer, std::optional is much clearer than encoding the null value as a negative or other such hacks. Another use of std::optional is to delay construction of an object without an extra dynamic allocation. That's way more convenient than using placement new. |