Skip to content

Commit e005551

Browse files
test/support/iterator_utils.h - fix warnings for G++ about sizeLimit type
1 parent fe6cd52 commit e005551

File tree

1 file changed

+40
-35
lines changed

1 file changed

+40
-35
lines changed

test/support/iterator_utils.h

+40-35
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ struct MakeIterator
224224

225225
// Useful constant variables
226226
constexpr ::std::size_t GuardSize = 5;
227-
constexpr ::std::size_t sizeLimit = 1000;
227+
template <typename T>
228+
constexpr T sizeLimit = 1000;
228229
// Construction below is needed for using SFINAE-friendliness that available in C++17
229230

230231
template <typename Iter, typename Void = void> // local iterator_traits for non-iterators
@@ -377,39 +378,41 @@ struct iterator_invoker
377378
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, Iterator>::value>
378379
operator()(Policy&& exec, Op op, Iterator begin, typename ::std::iterator_traits<Iterator>::difference_type n, Rest&&... rest)
379380
{
380-
invoke_if<Iterator>()(n <= sizeLimit, op, exec, make_iterator<Iterator>()(begin), n,
381-
::std::forward<Rest>(rest)...);
381+
invoke_if<Iterator>()(n <= sizeLimit<typename std::iterator_traits<Iterator>::difference_type>, op, exec,
382+
make_iterator<Iterator>()(begin), n, ::std::forward<Rest>(rest)...);
382383
}
383384

384385
template <typename Policy, typename Op, typename Iterator, typename... Rest>
385386
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, Iterator>::value &&
386387
!::std::is_base_of_v<non_const_wrapper, Op>>
387388
operator()(Policy&& exec, Op op, Iterator inputBegin, Iterator inputEnd, Rest&&... rest)
388389
{
389-
invoke_if<Iterator>()(::std::distance(inputBegin, inputEnd) <= sizeLimit, op, exec,
390-
make_iterator<Iterator>()(inputBegin), make_iterator<Iterator>()(inputEnd),
391-
::std::forward<Rest>(rest)...);
390+
invoke_if<Iterator>()(
391+
std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>, op, exec,
392+
make_iterator<Iterator>()(inputBegin), make_iterator<Iterator>()(inputEnd), std::forward<Rest>(rest)...);
392393
}
393394

394395
template <typename Policy, typename Op, typename InputIterator, typename OutputIterator, typename... Rest>
395396
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, OutputIterator>::value>
396397
operator()(Policy&& exec, Op op, InputIterator inputBegin, InputIterator inputEnd, OutputIterator outputBegin,
397398
Rest&&... rest)
398399
{
399-
invoke_if<InputIterator>()(::std::distance(inputBegin, inputEnd) <= sizeLimit, op, exec,
400-
make_iterator<InputIterator>()(inputBegin), make_iterator<InputIterator>()(inputEnd),
401-
make_iterator<OutputIterator>()(outputBegin), ::std::forward<Rest>(rest)...);
400+
invoke_if<InputIterator>()(
401+
std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>, op, exec,
402+
make_iterator<InputIterator>()(inputBegin), make_iterator<InputIterator>()(inputEnd),
403+
make_iterator<OutputIterator>()(outputBegin), std::forward<Rest>(rest)...);
402404
}
403405

404406
template <typename Policy, typename Op, typename InputIterator, typename OutputIterator, typename... Rest>
405407
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, OutputIterator>::value>
406408
operator()(Policy&& exec, Op op, InputIterator inputBegin, InputIterator inputEnd, OutputIterator outputBegin,
407409
OutputIterator outputEnd, Rest&&... rest)
408410
{
409-
invoke_if<InputIterator>()(::std::distance(inputBegin, inputEnd) <= sizeLimit, op, exec,
410-
make_iterator<InputIterator>()(inputBegin), make_iterator<InputIterator>()(inputEnd),
411-
make_iterator<OutputIterator>()(outputBegin),
412-
make_iterator<OutputIterator>()(outputEnd), ::std::forward<Rest>(rest)...);
411+
invoke_if<InputIterator>()(
412+
std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>, op, exec,
413+
make_iterator<InputIterator>()(inputBegin), make_iterator<InputIterator>()(inputEnd),
414+
make_iterator<OutputIterator>()(outputBegin), make_iterator<OutputIterator>()(outputEnd),
415+
std::forward<Rest>(rest)...);
413416
}
414417

415418
template <typename Policy, typename Op, typename InputIterator1, typename InputIterator2, typename OutputIterator,
@@ -419,10 +422,11 @@ struct iterator_invoker
419422
InputIterator2 inputEnd2, OutputIterator outputBegin, OutputIterator outputEnd, Rest&&... rest)
420423
{
421424
invoke_if<InputIterator1>()(
422-
::std::distance(inputBegin1, inputEnd1) <= sizeLimit, op, exec, make_iterator<InputIterator1>()(inputBegin1),
423-
make_iterator<InputIterator1>()(inputEnd1), make_iterator<InputIterator2>()(inputBegin2),
424-
make_iterator<InputIterator2>()(inputEnd2), make_iterator<OutputIterator>()(outputBegin),
425-
make_iterator<OutputIterator>()(outputEnd), ::std::forward<Rest>(rest)...);
425+
std::distance(inputBegin1, inputEnd1) <= sizeLimit<decltype(std::distance(inputBegin1, inputEnd1))>, op,
426+
exec, make_iterator<InputIterator1>()(inputBegin1), make_iterator<InputIterator1>()(inputEnd1),
427+
make_iterator<InputIterator2>()(inputBegin2), make_iterator<InputIterator2>()(inputEnd2),
428+
make_iterator<OutputIterator>()(outputBegin), make_iterator<OutputIterator>()(outputEnd),
429+
std::forward<Rest>(rest)...);
426430
}
427431

428432
template <typename Policy, typename Op, typename InputIterator1, typename InputIterator2, typename InputIterator3, typename OutputIterator,
@@ -433,11 +437,12 @@ struct iterator_invoker
433437
OutputIterator outputBegin, OutputIterator outputEnd, Rest&&... rest)
434438
{
435439
invoke_if<InputIterator1>()(
436-
::std::distance(inputBegin1, inputEnd1) <= sizeLimit, op, exec, make_iterator<InputIterator1>()(inputBegin1),
437-
make_iterator<InputIterator1>()(inputEnd1), make_iterator<InputIterator2>()(inputBegin2),
438-
make_iterator<InputIterator2>()(inputEnd2), make_iterator<InputIterator3>()(inputBegin3),
439-
make_iterator<InputIterator3>()(inputEnd3), make_iterator<OutputIterator>()(outputBegin),
440-
make_iterator<OutputIterator>()(outputEnd), ::std::forward<Rest>(rest)...);
440+
std::distance(inputBegin1, inputEnd1) <= sizeLimit<decltype(std::distance(inputBegin1, inputEnd1))>, op,
441+
exec, make_iterator<InputIterator1>()(inputBegin1), make_iterator<InputIterator1>()(inputEnd1),
442+
make_iterator<InputIterator2>()(inputBegin2), make_iterator<InputIterator2>()(inputEnd2),
443+
make_iterator<InputIterator3>()(inputBegin3), make_iterator<InputIterator3>()(inputEnd3),
444+
make_iterator<OutputIterator>()(outputBegin), make_iterator<OutputIterator>()(outputEnd),
445+
std::forward<Rest>(rest)...);
441446
}
442447
};
443448

@@ -473,7 +478,7 @@ struct iterator_invoker<IteratorTag, /* IsReverse = */ ::std::true_type>
473478
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, Iterator>::value>
474479
operator()(Policy&& exec, Op op, Iterator begin, typename ::std::iterator_traits<Iterator>::difference_type n, Rest&&... rest)
475480
{
476-
if (n <= sizeLimit)
481+
if (n <= sizeLimit<decltype(n)>)
477482
op(exec, make_iterator<Iterator>()(begin + n), n, ::std::forward<Rest>(rest)...);
478483
}
479484

@@ -482,15 +487,15 @@ struct iterator_invoker<IteratorTag, /* IsReverse = */ ::std::true_type>
482487
operator()(Policy&& exec, Op op, Iterator begin, typename ::std::iterator_traits<Iterator>::difference_type n, Iterator expected,
483488
Rest&&... rest)
484489
{
485-
if (n <= sizeLimit)
490+
if (n <= sizeLimit<decltype(n)>)
486491
op(exec, make_iterator<Iterator>()(begin + n), n, make_iterator<Iterator>()(expected + n), ::std::forward<Rest>(rest)...);
487492
}
488493

489494
template <typename Policy, typename Op, typename Iterator, typename... Rest>
490495
::std::enable_if_t<is_same_iterator_category_v<Iterator, ::std::bidirectional_iterator_tag>>
491496
operator()(Policy&& exec, Op op, Iterator begin, typename ::std::iterator_traits<Iterator>::difference_type n, Iterator expected, Rest&&... rest)
492497
{
493-
if (n <= sizeLimit)
498+
if (n <= sizeLimit<decltype(n)>)
494499
op(exec, make_iterator<Iterator>()(std::next(begin, n)), n, make_iterator<Iterator>()(std::next(expected, n)), ::std::forward<Rest>(rest)...);
495500
}
496501

@@ -499,30 +504,30 @@ struct iterator_invoker<IteratorTag, /* IsReverse = */ ::std::true_type>
499504
!::std::is_base_of_v<non_const_wrapper, Op>>
500505
operator()(Policy&& exec, Op op, Iterator inputBegin, Iterator inputEnd, Rest&&... rest)
501506
{
502-
if (::std::distance(inputBegin, inputEnd) <= sizeLimit)
507+
if (std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>)
503508
op(exec, make_iterator<Iterator>()(inputEnd), make_iterator<Iterator>()(inputBegin),
504-
::std::forward<Rest>(rest)...);
509+
std::forward<Rest>(rest)...);
505510
}
506511

507512
template <typename Policy, typename Op, typename InputIterator, typename OutputIterator, typename... Rest>
508513
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, OutputIterator>::value>
509514
operator()(Policy&& exec, Op op, InputIterator inputBegin, InputIterator inputEnd, OutputIterator outputBegin,
510515
Rest&&... rest)
511516
{
512-
if (::std::distance(inputBegin, inputEnd) <= sizeLimit)
517+
if (std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>)
513518
op(exec, make_iterator<InputIterator>()(inputEnd), make_iterator<InputIterator>()(inputBegin),
514-
make_iterator<OutputIterator>()(outputBegin + (inputEnd - inputBegin)), ::std::forward<Rest>(rest)...);
519+
make_iterator<OutputIterator>()(outputBegin + (inputEnd - inputBegin)), std::forward<Rest>(rest)...);
515520
}
516521

517522
template <typename Policy, typename Op, typename InputIterator, typename OutputIterator, typename... Rest>
518523
::std::enable_if_t<is_base_of_iterator_category<::std::random_access_iterator_tag, OutputIterator>::value>
519524
operator()(Policy&& exec, Op op, InputIterator inputBegin, InputIterator inputEnd, OutputIterator outputBegin,
520525
OutputIterator outputEnd, Rest&&... rest)
521526
{
522-
if (::std::distance(inputBegin, inputEnd) <= sizeLimit)
527+
if (std::distance(inputBegin, inputEnd) <= sizeLimit<decltype(std::distance(inputBegin, inputEnd))>)
523528
op(exec, make_iterator<InputIterator>()(inputEnd), make_iterator<InputIterator>()(inputBegin),
524529
make_iterator<OutputIterator>()(outputEnd), make_iterator<OutputIterator>()(outputBegin),
525-
::std::forward<Rest>(rest)...);
530+
std::forward<Rest>(rest)...);
526531
}
527532

528533
template <typename Policy, typename Op, typename InputIterator1, typename InputIterator2, typename OutputIterator,
@@ -531,11 +536,11 @@ struct iterator_invoker<IteratorTag, /* IsReverse = */ ::std::true_type>
531536
operator()(Policy&& exec, Op op, InputIterator1 inputBegin1, InputIterator1 inputEnd1, InputIterator2 inputBegin2,
532537
InputIterator2 inputEnd2, OutputIterator outputBegin, OutputIterator outputEnd, Rest&&... rest)
533538
{
534-
if (::std::distance(inputBegin1, inputEnd1) <= sizeLimit)
539+
if (std::distance(inputBegin1, inputEnd1) <= sizeLimit<decltype(std::distance(inputBegin1, inputEnd1))>)
535540
op(exec, make_iterator<InputIterator1>()(inputEnd1), make_iterator<InputIterator1>()(inputBegin1),
536541
make_iterator<InputIterator2>()(inputEnd2), make_iterator<InputIterator2>()(inputBegin2),
537542
make_iterator<OutputIterator>()(outputEnd), make_iterator<OutputIterator>()(outputBegin),
538-
::std::forward<Rest>(rest)...);
543+
std::forward<Rest>(rest)...);
539544
}
540545

541546
template <typename Policy, typename Op, typename InputIterator1, typename InputIterator2, typename InputIterator3,
@@ -545,12 +550,12 @@ struct iterator_invoker<IteratorTag, /* IsReverse = */ ::std::true_type>
545550
InputIterator2 inputEnd2, InputIterator3 inputBegin3, InputIterator3 inputEnd3,
546551
OutputIterator outputBegin, OutputIterator outputEnd, Rest&&... rest)
547552
{
548-
if (::std::distance(inputBegin1, inputEnd1) <= sizeLimit)
553+
if (std::distance(inputBegin1, inputEnd1) <= sizeLimit<decltype(std::distance(inputBegin1, inputEnd1))>)
549554
op(exec, make_iterator<InputIterator1>()(inputEnd1), make_iterator<InputIterator1>()(inputBegin1),
550555
make_iterator<InputIterator2>()(inputEnd2), make_iterator<InputIterator2>()(inputBegin2),
551556
make_iterator<InputIterator3>()(inputEnd3), make_iterator<InputIterator3>()(inputBegin3),
552557
make_iterator<OutputIterator>()(outputEnd), make_iterator<OutputIterator>()(outputBegin),
553-
::std::forward<Rest>(rest)...);
558+
std::forward<Rest>(rest)...);
554559
}
555560

556561
};

0 commit comments

Comments
 (0)