namespace std::simd {
template<class T, class Abi>
constexpr basic_vec<T, Abi>
min(const basic_vec<T, Abi>& a,
const basic_vec<T, Abi>& b) noexcept; // C++26
}
概要
minは、2つのbasic_vecを要素ごとに比較し、それぞれ小さいほうの値を持つbasic_vecを返す関数である。
テンプレートパラメータ制約
Tがstd::totally_orderedのモデルであること
戻り値
i番目の要素がmin(a[i], b[i])となるbasic_vec。
例外
投げない
例
#include <simd>
#include <print>
namespace simd = std::simd;
int main()
{
simd::vec<int, 4> a([](int i) { return i; }); // {0, 1, 2, 3}
simd::vec<int, 4> b([](int i) { return 3 - i; }); // {3, 2, 1, 0}
// 要素ごとの最小値
auto r = simd::min(a, b); // {0, 1, 1, 0}
for (int i = 0; i < r.size(); ++i)
std::print("{} ", r[i]);
std::println("");
}
出力
0 1 1 0
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
参照
- P1928R15 std::simd — merge data-parallel types from the Parallelism TS 2
- C++26で
std::simdライブラリが追加された
- C++26で