Use difference_type in rotate_general() instead of int

This commit is contained in:
Roland Reichwein 2026-03-07 18:46:41 +01:00
parent cf944f1bc7
commit 8f9e32bbf3

View File

@ -1211,21 +1211,21 @@ namespace etl
}
typedef typename etl::iterator_traits<TIterator>::value_type value_type;
typedef typename etl::iterator_traits<TIterator>::difference_type difference_type;
int n = last - first;
int m = middle - first;
int gcd_nm = (n == 0 || m == 0) ? n + m : etl::gcd(n, m);
difference_type n = last - first;
difference_type m = middle - first;
difference_type gcd_nm = (n == 0 || m == 0) ? n + m : etl::gcd(n, m);
TIterator result = first + (last - middle);
for (int i = 0; i < gcd_nm; i++)
for (difference_type i = 0; i < gcd_nm; i++)
{
value_type temp = ETL_MOVE(*(first + i));
int j = i;
difference_type j = i;
while (true)
{
int k = j + m;
difference_type k = j + m;
if (k >= n)
{
@ -1260,22 +1260,21 @@ namespace etl
}
typedef typename etl::iterator_traits<TIterator>::value_type value_type;
typedef typename etl::iterator_traits<TIterator>::difference_type difference_type;
int n = last - first;
int m = middle - first;
int gcd_nm = (n == 0 || m == 0) ? n + m : etl::gcd(n, m);
difference_type n = last - first;
difference_type m = middle - first;
difference_type gcd_nm = (n == 0 || m == 0) ? n + m : etl::gcd(n, m);
TIterator result = first + (last - middle);
for (int i = 0; i < gcd_nm; i++)
for (difference_type i = 0; i < gcd_nm; i++)
{
value_type temp = *(first + i);
int j = i;
difference_type j = i;
while (true)
{
int k = j + m;
difference_type k = j + m;
if (k >= n)
{
k = k - n;