Для чего предназначен параметр шаблона класса Proj и шаблон класса IndirectUnaryPredicate в диапазонах TS?

CPP-справочник показывает следующий шаблон функции (среди прочих) из (экспериментальных) диапазонов TS:

template< ranges::InputIterator I, ranges::Sentinel<I> S,
class Proj = ranges::identity,
ranges::IndirectUnaryPredicate<ranges::projected<I, Proj>> Pred >
bool all_of( I first, S last, Pred pred, Proj proj = Proj{} );

Что может параметр шаблона Proj используется в сочетании с IndirectUnaryPredicate?

1

Решение

Это проекция. Вы можете использовать его для «проецирования» элементов диапазона перед передачей их в предикат. Это полезно, например, когда вы собираетесь применять предикат для сложного типа данных, такого как std::pair, давайте хотим применить предикат к std::pair::second,

all_of(range_of_std_pairs, pred, &pair_t::second);

проверяет диапазон std :: пар, используя предикат pred на втором элементе пары.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]