- simd[meta header]
- std::simd[meta namespace]
- function template[meta id-type]
- cpp26[meta cpp]
namespace std::simd {
template<std::size_t Bytes, class Abi>
constexpr simd-size-type
reduce_max_index(const basic_mask<Bytes, Abi>& k); // (1) C++26
constexpr simd-size-type
reduce_max_index(std::same_as<bool> auto x); // (2) C++26
}- simd-size-type[link /reference/simd/simd-size-type.md]
- basic_mask[link basic_mask.md]
- std::same_as[link /reference/concepts/same_as.md]
マスクのうち、trueである要素の最大のインデックス(最後にtrueとなる要素の位置)を取得する。
- (1) :
basic_maskkのうち、trueである要素の最大のインデックスを返す。 - (2) : スカラーの
bool値xに対するオーバーロード(SIMD-genericなコードを書けるようにするためのもの)。
戻り値の型simd-size-typeは、要素数を表す説明専用の符号付き整数型である。
- (1) :
any_of(k)がtrueであること - (2) :
xがtrueであること
- (1) :
k[i]がtrueとなる最大のインデックスiを返す。 - (2) :
0を返す。
#include <simd>
#include <print>
namespace simd = std::simd;
int main()
{
simd::vec<int, 4> v([](int i) { return i; }); // {0, 1, 2, 3}
// 値が1より小さい最後の要素のインデックス
std::println("{}", simd::reduce_max_index(v < 2));
}- simd::reduce_max_index[color ff0000]
- simd::vec[link basic_vec.md]
1
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]