No matching function for call to ..
От: Igore Россия  
Дата: 04.05.11 14:42
Оценка:
Помогите разобраться почему не компилируется в mingw данный пример, в студии все нормально. Если использовать SumInClass то все хорошо, сейчас переношу исходники с MSVC 2008 на Qt4.7.2 и QtCreator, хочется переделывать как можно меньше.

#include <numeric>
#include <algorithm>
#include <map>
#include <string>
#include <iostream>


class TestClass
{
public:
    typedef std::map<std::string, int> TMap;
    TestClass()
    {
        map_["1"] = 1;
        map_["2"] = 1;
        map_["3"] = 1;
    }
    ~TestClass(){}

    int sum()
    {
        struct Sum
        {
            int operator ()(const int& partial_value, const TMap::value_type& val) const
            {
                return partial_value + val.second;
            }
        };

        return std::accumulate(map_.begin(), map_.end(), int(), Sum());
        //return std::accumulate(map_.begin(), map_.end(), int(), SumInClass());
    }

private:
    TMap map_;

    struct SumInClass
    {
        int operator ()(const int& partial_value, const TMap::value_type& val) const
        {
            return partial_value + val.second;
        }
    };
};

int main(int argc, char *argv[])
{
    TestClass tc;
    std::cout << tc.sum() << std::endl;

    return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.