Displaying 3 results from an estimated 3 matches for "r322838".
Did you mean:
322838
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
2018 Jan 24
0
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
That's an unintentional change. However, the reason for this change
was to make optional of trivially copyable types trivially copyable,
adding a user-provided move ctor would break that again :(
I'm leaning towards making the non-trivial version of llvm::Optional
more like std::optional. In the long term std::optional is going to
replace llvm::Optional. How bad would that be for your use
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
2018 Jan 24
1
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
On Wed, Jan 24, 2018 at 11:47 PM, Benjamin Kramer <benny.kra at gmail.com>
wrote:
> That's an unintentional change. However, the reason for this change
> was to make optional of trivially copyable types trivially copyable,
> adding a user-provided move ctor would break that again :(
>
> I'm leaning towards making the non-trivial version of llvm::Optional
> more
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
2018 Jan 24
2
[llvm] r322838 - [ADT] Split optional to only include copy mechanics and dtor for non-trivial types.
Hey Ben,
This change broke some clangd code (no failing test, mea culpa), because it
changed the move semantics.
Previously: a moved-from llvm::Optional was None (for all types).
Now: a moved-from llvm::Optional is None (for non-trivial types), and has
the old value (for trivial types).
FWIW, a moved-from std::optional is *not* nullopt, and contains the
moved-from value.
This seems sad to me,