Created on 2025-12-12.00:00:00 last changed 2 weeks ago
Proposed resolution:
This wording is relative to N5014.
Modify [expos.only.entity] by moving the concept (unchanged) from [simd.expos]:
template<class T, class U = T> using synth-three-way-result = // exposition only decltype(synth-three-way(declval<T&>(), declval<U&>())); template<class T> concept constexpr-wrapper-like = // exposition only convertible_to<T, decltype(T::value)> && equality_comparable_with<T, decltype(T::value)> && bool_constant<T() == T::value>::value && bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value; }
Modify [span.syn] as indicated:
template<class T> concept integral-constant-like = // exposition only is_integral_v<remove_cvref_t<decltype(T::value)>> && !is_same_v<bool, remove_const_t<decltype(T::value)>> && constexpr-wrapper-like<T>;convertible_to<T, decltype(T::value)> && equality_comparable_with<T, decltype(T::value)> && bool_constant<T() == T::value>::value && bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value;
Modify [simd.expos] as indicated:
template<class T> concept constexpr-wrapper-like = // exposition only convertible_to<T, decltype(T::value)> && equality_comparable_with<T, decltype(T::value)> && bool_constant<T() == T::value>::value && bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value;
[ 2025-12-12; LWG telecon; Status changed: New → Ready. ]
NB comment:
We have two exposition-only concepts for similar things (integral-constant-likeandconstant-wrapper-like). The former can be expressed in terms of the latter.
Proposed change: Moveconstant-wrapper-liketo the library introduction and updateintegral-constant-liketo use it.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-12-12 17:04:17 | admin | set | messages: + msg15820 |
| 2025-12-12 17:04:17 | admin | set | status: new -> ready |
| 2025-12-12 09:26:12 | admin | set | messages: + msg15819 |
| 2025-12-12 00:00:00 | admin | create | |