Libstdc++: Merged concept for ranges with static sized.
Consolidates duplicated static size concepts into a single `ranges::__static_sized_range` concept.
This commit merges the duplicated __detail::__statically_sized and simd::__static_sized_range concepts into a single ranges::__static_sized_range concept within libstdc++. This consolidation reduces code duplication and improves maintainability. The implementation is based on the __statically_sized concept, which avoids instantiating class templates for each possible size value.
In Details
This commit refactors static size checking. Previously, both the ranges library (in std/meta) and the SIMD library had their own __static_sized_range concepts. This change consolidates them into ranges::__static_sized_range, living in bits/ranges_base.h. The key implementation detail is using __statically_sized to avoid excessive template instantiations.
For Context
In C++, concepts are used to define requirements on template arguments. 'Ranges' are sequences of elements, used with algorithms. 'SIMD' (Single Instruction, Multiple Data) is a technique for performing the same operation on multiple data points simultaneously. This commit combines two similar concepts related to statically-sized ranges (ranges whose size is known at compile time) into one, reducing code duplication and making the library easier to maintain.