Помогите разобраться почему не компилируется в 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;
}