mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-02 07:25:51 +01:00
The current representation has two nested presence indicatators (the optional bool, the null pointer). Currently the pointer is never null, but the style guide suggests that T* should be used for parameters that may or may not be present, so we do not need the optional here. > When passing an object's address as an argument, use a reference > unless one of the following cases applies: > > - If the parameter is optional, use a pointer and document that it > may be null. Once the parameter is just a pointer, the ScopedTiming field does not need an optional either, and can just store the pointer. It would be more preferable to have an optional representation of a sometimes-null pointer like optional<T&> to describe a sometimes-null pointer, as this would allow clearer runtime diagnostics when used incorrectly (a check failure in unwrapping) and would be better self-documenting through syntax instead of a comment. But we do not currently have such a primitive.