Created on 2025-09-27.00:00:00 last changed 2 weeks ago
Proposed resolution:
This wording is relative to N5014.
Modify [simd.syn] as indicated:
namespace std::simd { […] // [simd.alg], algorithms […] template<copyableclassT, copyableclassU> 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;
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-09-27 09:47:57 | admin | set | messages: + msg15090 |
2025-09-27 00:00:00 | admin | create |