[libcxx-commits] [libcxx] r363692 - [libc++] Implement P0608R3 - A sane variant converting constructor
Eric Fiselier via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jun 19 11:19:59 PDT 2019
On Wed, Jun 19, 2019 at 3:18 AM Zhihao Yuan <zy at miator.net> wrote:
> On Tuesday, June 18, 2019 11:33 PM, Eric Fiselier <eric at efcs.ca> wrote:
>
>
> This commit has caused a large number of compiler failures in Google's
> codebase.
> I don't think all of them were intended. For example:
> ```
> variant<uint32_t> source6(42);
> ```
>
>
> This is intended. A signed literal can
> no longer initialize an unsigned
> alternative after P0608.
>
> Could you please roll back so we can further evaluate the impact of this
> change?
>
>
> Done. Please test this diff
>
> https://reviews.llvm.org/differential/diff/205514/
>
Thanks you. I appreciate your understanding.
I'll be working diligently to fix the breakages internally.
The test results from last night had a failure in a low level
dependency, which muddled the results. I'll run the tests again tonight.
Additionally, thanks for your analysis on the failures.
>
>
> which includes a patch for case 3 (see below).
>
> Additionally, could you review the examples I provided and confirm that
> they
> should break under the new wording?
>
> [1] https://godbolt.org/z/oU9v6U (Abseil's std/absl variant tests)
>
>
> All the tests failing here are related to
> literals; the ConvertVariantTo helper
> may need to accept different arguments
> for different literals.
>
> [2] https://godbolt.org/z/-YAaTc (user code in Google)
>
>
> This is intended and... it looks like
> a case where a -Wconversion warning
> being hidden by the old variant ctor.
>
> [3] https://godbolt.org/z/YW_aSU (another example of broken user code)
>
>
> This is not intended. It is caused by a
> bug in Clang. I've made a patch to
> workaround it in libc++
>
> https://reviews.llvm.org/differential/diff/205513/
>
> ^^ this diff for you to read only; it is included
> in the previous diff.
>
> /* the problem is that
>
> https://godbolt.org/z/qQZFn_
>
> testing constexpr ctor breaks out expression
> SFINAE. If you uncomment line 11, you will find
> that MSVC continues to work. */
>
> --
> Zhihao
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190619/c1f9e6b2/attachment.html>
More information about the libcxx-commits
mailing list