On 06/12/16 10:52 +0200, Ville Voutilainen wrote:
The background for these is at
https://stackoverflow.com/questions/40983822/cannot-use-a-constant-reference-of-experimentaloptional-when-using-clang-lib
We use excessive trickery to constrain __constexpr_addressof in
experimental::optional.
That trickery is not agreed on by compilers, and we can cope with a much simpler
approach.
The first patch just simplifies that trickery by moving the
constraints from a template
parameter to the return type.
The second patch uses a constexpr std::__addressof if it's available.
I split these
out in case we want just the first patch but not the second. The second patch
allows C++17 users to benefit from a completely constexpr addressof even
for experimental::optional (std::optional already gives that).
Tested on Linux-x64. Ok for trunk, the gcc-6 branch and the gcc-5 branch?
Yes, both patches are OK for all branches (they only affect
experimental TS material and/or C++17 mode, so OK for stage 3).
Thanks.