[libcxx-commits] [libcxx] [libc++] Fix std::variant evaluating template arguments too eagerly (PR #151028)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jul 31 06:19:48 PDT 2025
================
@@ -1182,13 +1182,21 @@ public:
_LIBCPP_HIDE_FROM_ABI constexpr variant(const variant&) = default;
_LIBCPP_HIDE_FROM_ABI constexpr variant(variant&&) = default;
- template < class _Arg,
----------------
ldionne wrote:
I would suggest this instead, which is easier to read IMO:
```c++
template <class _Arg, class _DependentArg = enable_if_t<
!is_same_v<__remove_cvref_t<_Arg>, variant> &&
!__is_inplace_type<__remove_cvref_t<_Arg>>::value &&
!__is_inplace_index<__remove_cvref_t<_Arg>>::value,
_Arg
>,
class _Tp = __variant_detail::__best_match_t<_DependentArg, _Types...>,
size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
enable_if_t<is_constructible_v<_Tp, _Arg>, int> = 0
>
```
https://github.com/llvm/llvm-project/pull/151028
More information about the libcxx-commits
mailing list