r322838 changed semantics for llvm::Optional that removes the
guarantee of setting the value to empty after move.
This change creates a wrapper around Optional that gives this
guarantee, it is useful for code dealing with empty values that could
be moved.
Details
- Reviewers
sammccall
Diff Detail
- Repository
- rCTE Clang Tools Extra
- Build Status
Buildable 14233 Build 14233: arc lint + arc unit
Event Timeline
clangd/Function.h | ||
---|---|---|
141 | As noted in the thread I don't think this pulls its weight for us. |
clangd/Function.h | ||
---|---|---|
141 | It's not a bottleneck, but I don't see why something like ScopeExitGuard should incur an overhead of an extra alloc that needs to be done by unique_ptr. I don't subscribe to the view that this class carries much weight. It's a really simple wrapper. It will probably get much more complicated if we want to support the general case (i.e. make it a substitute of llvm::Optional with extra semantics). And I don't see how we can put it into ADT/Optional.h without supporting the general case. |
As noted in the thread I don't think this pulls its weight for us.
Swapping unique_ptr for optional doesn't seem like it'll ever be a bottleneck for us. If we really must avoid the allocation for some reason then adding move logic to ScopeExitGuard seems simpler.
If you feel strongly about keeping this as a separate concept, it should really go in llvm/ADT/Optional.h, and probably needs a new name.