Loading
Core: Replace recursive utility expansions
Remove three recursive template helpers from Core utilities:
- Replace recursive serializer traversal with an ordered C++14 pack expansion.
- Replace recursive fixed-size array reduction with a C++14
constexprloop. - Replace the recursive compile-time floor-log2 metaprogram with a C++14
constexprloop.
The serializer expansion preserves argument order, empty-pack behavior, device annotations, serialization, and deserialization.
The array reduction removes an obsolete ICC 13 workaround while preserving empty-array identity handling and left-to-right reduction. It intentionally uses T as its stable accumulator and return type, converting each reducer result back to T.
The floor-log2 helper preserves the existing behavior over the full unsigned int range, including returning zero for inputs zero and one.
Edited by Florian Maurin