- simd[meta header]
- std::simd[meta namespace]
- function template[meta id-type]
- cpp26[meta cpp]
namespace std::simd {
template<class T, class Abi>
constexpr std::pair<basic_vec<T, Abi>, basic_vec<T, Abi>>
minmax(const basic_vec<T, Abi>& a,
const basic_vec<T, Abi>& b) noexcept; // C++26
}minmaxは、2つのbasic_vecから、要素ごとの最小値と最大値をまとめて取得する関数である。結果はstd::pairのfirstに最小値、secondに最大値が格納される。
以下と等価である:
return std::pair{min(a, b), max(a, b)};- min[link min.md]
- max[link max.md]
firstがmin(a, b)、secondがmax(a, b)であるstd::pair。
投げない
#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 [lo, hi] = simd::minmax(a, b);
for (int i = 0; i < lo.size(); ++i)
std::print("{} ", lo[i]);
std::println("");
for (int i = 0; i < hi.size(); ++i)
std::print("{} ", hi[i]);
std::println("");
}- simd::minmax[color ff0000]
- simd::vec[link basic_vec.md]
0 1 1 0
3 2 2 3
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]
- P1928R15 std::simd — merge data-parallel types from the Parallelism TS 2
- C++26で
std::simdライブラリが追加された
- C++26で