Ваш функтор в порядке. Проблема в звонке на transform
.
Преобразование имеет прототип
transform(_InputIterator1 __first1, _InputIterator1 __last1,
_InputIterator2 __first2, _OutputIterator __result,
_BinaryOperation __binary_op)
Ваш звонок
transform(l1.begin(), l1.end(), l2.begin(), l2.end(), SumsTo<int>(10) );
вместо l2.end()
, четвертый аргумент итератора должен быть началом последовательности результатов. Он должен ссылаться на последовательность объектов, которые вы можете построить из bool
.
Если вы хотите сохранить результаты в l2
, тогда вы хотите
transform(l1.begin(), l1.end(), l2.begin(), l2.begin(), SumsTo<int>(10) );
Как предполагает GMan, другой подход - std::back_inserter
из <iterator>
:
vector<bool> sums10; // vector<bool> is Good Enough for Me
transform(l1.begin(), l1.end(), l2.begin(), back_inserter(sums10), SumsTo<int>(10) );