Created on 2025-09-27.00:00:00 last changed 1 month ago
Proposed resolution:
This wording is relative to N5014.
Modify [simd.syn] as indicated:
namespace std::simd {
[…]
// [simd.alg], algorithms
[…]
template<copyableclass T, copyableclass U>
constexpr auto select(bool c, const T& a, const U& b)
-> remove_cvref_t<decltype(c ? a : b)>;
[…]
};
Modify [simd.alg] as indicated:
template<copyableclassT, copyableclassU> constexpr auto select(bool c, const T& a, const U& b) -> remove_cvref_t<decltype(c ? a : b)>;-9- Effects: Equivalent to:
return c ? a : b;
[ 2025-10-22; Reflector poll. ]
Set priority to 3 after reflector poll.
Split opinion between further pinning down exact condition (is_constructible_v, decltype(auto(c ? a : b))), and accepting the PR (copyable) as this is not meant to be generic facility.
This function currently only requires that `c ? a : b` be a well-formed expression, which simply returns `c ? a : b`.
Given that it seems intended to work with `basic_vec`, `basic_mask`, or vectorizable type, requiring `T` and `U` to be copyable seems reasonable since they are trivially copyable. It shouldn't take non-copyable objects and produce hard errors in the function body.| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-10-22 12:32:36 | admin | set | messages: + msg15347 |
| 2025-09-27 09:47:57 | admin | set | messages: + msg15090 |
| 2025-09-27 00:00:00 | admin | create | |