有问题的STL低于VS 2005。我只限于2005年的比赛。
class SpeedTest
{
public:
void AddDataPair(const std::pair<std::string, double> & datum, const std::string & insertName = "");
private:
std::map <std::string, double> _Data;
}
void SpeedTest::AddDataPair(const pair<string, double> & datum, const string & insertName)
{
string key = insertName + '_' + datum.first;
_Data[key] += datum.second;
}
void SpeedTest::Insert(SpeedTest * toCopy, const string & insertName)
{
map<string, double>::iterator dataIter;
map<string, double>::iterator beginIter = toCopy->_Data.begin();
map<string, double>::iterator endIter = toCopy->_Data.end();
for_each
(
beginIter,
endIter,
bind2nd(mem_fun(&INGSpeedTest::AddDataPair)(), insertName)
);
}我得到错误C2784:
“std::const_mem_fun1_t<_Result,_Ty,_Arg> std::mem_fun(结果(_thiscall _Ty::* )(_Arg) const)”:
无法推断“_thiscall( _Ty::* )(_Arg) const”的模板参数
(__thiscall INGSpeedTest::* )(const std::pair<_Ty1,_Ty2> &,const::string&)
with
[
_Ty1=std::string,
_Ty2=double
]如果我用for循环替换for_each
for (dataIter = beginIter;
dataIter != endIter;
++dataIter)
{
AddDataPair(*dataIter, insertName);
}它编译得很好。但我仍然想知道for_each的失败之处。
非常感谢你给我的时间、知识和努力,
罗伯特
发布于 2013-11-01 18:48:25
std::mem_fun只能包装接受零个或一个参数的成员函数。你的需要两个。
https://stackoverflow.com/questions/19729605
复制相似问题