Накапливать результат от функции-члена элементов в контейнере

У меня есть класс с функцией, которая возвращает счетчик, вот так:

class CTestClass
{
public:
    // ...
    size_t GetCount()const;
    // ...
};

И где-то в моей программе у меня есть вектор объектов этого класса. У меня есть функция для получения общего числа (сумма результатов CTestClass::GetCount()), реализованная как обычный цикл:

size_t sum = 0;
for(vector::const_iterator it = v.begin(); it != v.end(); ++it)
{
    sum += it->GetCount();
}

Я хочу рефакторить ее, чтобы использовать средства, доступные в стандартной библиотеке, и я подумал о accumulate. Я смог сделать это с помощью объекта функции (легко), но я почти уверен, что это можно сделать без объявления другого объекта (у меня нет C++11 или boost, поэтому нет лямбд, но у меня есть TR1).
В поисках ответа я нашел эти ресурсы, но они не решают вопрос:

  • Это практически тот же вопрос, и ответы, предоставленные это цикл, accumulate и functor, и accumulate и lambda, но есть ссылка без ответа на bind и тому подобное.
  • В этом ответе на аналогичный вопрос используются accumulate, plus и bind, но использует член данных вместо функции-члена.

Итак, есть ли способ сделать это с помощью bind или чего-то подобного?

5
задан Community 23 May 2017 в 12:20
поделиться