I'm trying to loop on containers(map, set,vector,list) and array the same way. Here is the code:
template<typename TYPE>
void AddXmlOfContAttribute(TYPE *it)
{
m_ss<<"<SingleNode ";
AddXmlAttribute("Value" , *it);
m_ss<<"/>\n";
}
template<typename TYPE1,typename TYPE2>
void AddXmlOfContAttribute(std::pair<TYPE1,TYPE2> tpair)
{
m_ss<<"<MapNode ";
AddXmlAttribute("key" , tpair->first);
AddXmlAttribute("Value" , tpair->second);
m_ss<<"/>\n";
}
template<typename TYPE>
void AddContainerToXml(std::string str, TYPE it_begin , TYPE it_end)
{
if(it_begin != it_end)
{
m_ss<<"<"<<str<<">\n";
//std::for_each(it_begin , it_end, AddXmlOfContAttribute);
for( ; it_begin != it_end ; it_begin++)
AddXmlOfContAttribute(it_begin);
m_ss<<"</"<<str<<">\n";
}
}
I get the following error:
In member function ‘void AddElementToBackupFileFunctor::AddContainerToXml(CrString, TYPE, TYPE) [with TYPE = std::_Rb_tree_const_iterator >]’ instantiated from here error: no matching function for call to
AddElementToBackupFileFunctor::AddXmlOfContAttribute(std::_Rb_tree_const_iterator >&)’
How do i do it in normal loop? Bonus question :How do i do it in for_each loop?