#include <iostream>
#include <algorithm>
#include <functional>
#include <map>
#include <string>
#include <vector>
int main( )
{
using namespace std:: placeholders ;
std:: map < std:: string , int > karta;
std:: vector < std:: string > goroda{ "foo" , "bar" , "foo" } ;
std:: for_each ( goroda.begin ( ) , goroda.end ( ) , std:: bind (
static_cast <
std:: pair < decltype( karta) :: iterator , bool >
( decltype( karta) :: * ) ( const decltype( karta) :: key_type & , decltype( karta) :: mapped_type && ) >
( & decltype( karta) :: insert_or_assign ) ,
std:: ref ( karta) ,
_1,
std:: bind (
std:: plus < decltype( karta) :: mapped_type > ( ) ,
1 ,
std:: bind (
static_cast < decltype( karta) :: mapped_type & ( decltype( karta) :: * ) ( const decltype( karta) :: key_type & ) >
( & decltype( karta) :: operator [ ] ) ,
std:: ref ( karta) ,
_1) )
) ) ;
std:: cout << "foo: " << karta[ "foo" ] << "\n bar: " << karta[ "bar" ] << '\n ' ;
return EXIT_SUCCESS ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCmludCBtYWluKCkKewogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6cGxhY2Vob2xkZXJzOwoKICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IGthcnRhOwogICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGdvcm9kYXsgImZvbyIsICJiYXIiLCAiZm9vIiB9OwoKICAgIHN0ZDo6Zm9yX2VhY2goZ29yb2RhLmJlZ2luKCksIGdvcm9kYS5lbmQoKSwgc3RkOjpiaW5kKAogICAgICAgIHN0YXRpY19jYXN0PAogICAgICAgICAgICBzdGQ6OnBhaXI8ZGVjbHR5cGUoa2FydGEpOjppdGVyYXRvciwgYm9vbD4KICAgICAgICAgICAgKGRlY2x0eXBlKGthcnRhKTo6KikoY29uc3QgZGVjbHR5cGUoa2FydGEpOjprZXlfdHlwZSYsIGRlY2x0eXBlKGthcnRhKTo6bWFwcGVkX3R5cGUmJik+CiAgICAgICAgICAgICAgICAoJmRlY2x0eXBlKGthcnRhKTo6aW5zZXJ0X29yX2Fzc2lnbiksCiAgICAgICAgc3RkOjpyZWYoa2FydGEpLAogICAgICAgIF8xLAogICAgICAgIHN0ZDo6YmluZCgKICAgICAgICAgICAgc3RkOjpwbHVzPGRlY2x0eXBlKGthcnRhKTo6bWFwcGVkX3R5cGU+KCksCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgIHN0ZDo6YmluZCgKICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGthcnRhKTo6bWFwcGVkX3R5cGUmKGRlY2x0eXBlKGthcnRhKTo6KikoY29uc3QgZGVjbHR5cGUoa2FydGEpOjprZXlfdHlwZSAmKT4KICAgICAgICAgICAgICAgICgmZGVjbHR5cGUoa2FydGEpOjpvcGVyYXRvcltdKSwKICAgICAgICAgICAgICAgIHN0ZDo6cmVmKGthcnRhKSwKICAgICAgICAgICAgICAgIF8xKSkKICAgICkpOwogICAgc3RkOjpjb3V0IDw8ICJmb286ICIgPDwga2FydGFbImZvbyJdIDw8ICJcbmJhcjogIiA8PCBrYXJ0YVsiYmFyIl0gPDwgJ1xuJzsKICAgIAogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQ==
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:19:19: error: ‘insert_or_assign’ is not a member of ‘std::map<std::__cxx11::basic_string<char>, int>’
(&decltype(karta)::insert_or_assign),
^~~~~~~~
stdout