29 Numerics library [numerics]

29.10 Data-parallel types [simd]

29.10.5 Load and store flags [simd.flags]

29.10.5.1 Class template simd_flags overview [simd.flags.overview]

namespace std { template<class... Flags> struct simd_flags { // [simd.flags.oper], simd_flags operators template<class... Other> friend consteval auto operator|(simd_flags, simd_flags<Other...>); }; }
[Note 1: 
The class template simd_flags acts like an integer bit-flag for types.
— end note]
Constraints: Every type in the parameter pack Flags is one of convert-flag, aligned-flag, or overaligned-​flag<N>.

29.10.5.2 simd_flags operators [simd.flags.oper]

template<class... Other> friend consteval auto operator|(simd_flags a, simd_flags<Other...> b);
Returns: A default-initialized object of type simd_flags<Flags2...> for some Flags2 where every type in Flags2 is present either in template parameter pack Flags or in template parameter pack Other, and every type in template parameter packs Flags and Other is present in Flags2.
If the packs Flags and Other contain two different specializations overaligned-flag<N1> and overaligned-flag<N2>, Flags2 is not required to contain the specialization overaligned-flag<std​::​min(N1, N2)>.