[PATCH] D44865: [libc++] Implement P0608R3 - A sane variant converting constructor

Zoe Carver via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 9 20:54:48 PDT 2019


zoecarver added a comment.

A few minor things:

- the spacing is different from the rest of libc++ (a lot of it was that way before).
- since this is a paper it should probably be guarded with `#if _LIBCPP_STD_VER > 17`
- update the status in `www`.

Also, the standard says explicitly, "A variant is permitted to hold the same type more than once, and to hold differently cv-qualified versions of the same type." But currently, that is not allowed — not an issue with this patch, but something that should be fixed.



================
Comment at: include/variant:1110
+template <class _Base, class _Tp>
+struct __overload_bool : _Base {
+  using _Base::operator();
----------------
Is this structure 100% necessary? Couldn't `__overload` add an overload to take care of `bool`s? Maybe something like this:
 
```
  template<class _Up>
  auto operator()(_Tp, _Up&&) const
    ->  enable_if_t<
            is_same_v<__uncvref_t<_Up>, bool>,
            __identity<_Tp>
        >;
```


Repository:
  rCXX libc++

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D44865/new/

https://reviews.llvm.org/D44865





More information about the cfe-commits mailing list