1#ifndef SANISIZER_ND_OFFSET_HPP
2#define SANISIZER_ND_OFFSET_HPP
20template<
typename Size_>
21Size_ nd_offset_internal(Size_ extent, Size_ pos) {
25template<
typename Size_,
typename... MoreArgs_>
26Size_ nd_offset_internal(Size_ extent, Size_ pos, MoreArgs_... more_args) {
27 return (pos + nd_offset_internal<Size_>(more_args...)) * extent;
54template<
typename Size_,
typename First_,
typename Second_,
typename... Remaining_>
55Size_
nd_offset(First_ x1, First_ extent1, Second_ x2, Remaining_... remaining) {
59 return static_cast<Size_
>(x1) + nd_offset_internal<Size_>(extent1, x2, remaining...);
Sanitize sizes to avoid integer overflow.
Definition arithmetic.hpp:14
Size_ nd_offset(First_ x1, First_ extent1, Second_ x2, Remaining_... remaining)
Definition nd_offset.hpp:55