#include <map>
#include <iostream>
#include <algorithm>
#include <stdexcept>
//functor
struct finder {
finder(int value_to_find) : v(value_to_find){}
bool operator()(const std::pair<const int, int>& node)
{return node.second == v;}
protected:
int v;
};
int find_value(const std::map<int, int>& container, int value_to_find) {
typename std::map<int, int>::const_iterator it;
it = std::find_if(container.begin(), container.end(), finder(value_to_find));
if (it == container.end())
throw std::runtime_error("value is not in container!");
return it->first;
}
int main() {
std::map<int, int> container;
container[3] = 7;
std::cout << find_value(container, 7);
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKLy9mdW5jdG9yCnN0cnVjdCBmaW5kZXIgewogICAgZmluZGVyKGludCB2YWx1ZV90b19maW5kKSA6IHYodmFsdWVfdG9fZmluZCl7fQogICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6cGFpcjxjb25zdCBpbnQsIGludD4mIG5vZGUpIAogICAge3JldHVybiBub2RlLnNlY29uZCA9PSB2O30KcHJvdGVjdGVkOgogICAgaW50IHY7Cn07CgppbnQgZmluZF92YWx1ZShjb25zdCBzdGQ6Om1hcDxpbnQsIGludD4mIGNvbnRhaW5lciwgaW50IHZhbHVlX3RvX2ZpbmQpIHsKICAgIHR5cGVuYW1lIHN0ZDo6bWFwPGludCwgaW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQ7CiAgICBpdCA9IHN0ZDo6ZmluZF9pZihjb250YWluZXIuYmVnaW4oKSwgY29udGFpbmVyLmVuZCgpLCBmaW5kZXIodmFsdWVfdG9fZmluZCkpOwogICAgaWYgKGl0ID09IGNvbnRhaW5lci5lbmQoKSkKICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoInZhbHVlIGlzIG5vdCBpbiBjb250YWluZXIhIik7CiAgICByZXR1cm4gaXQtPmZpcnN0Owp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6bWFwPGludCwgaW50PiBjb250YWluZXI7CiAgICBjb250YWluZXJbM10gPSA3OwogICAgc3RkOjpjb3V0IDw8IGZpbmRfdmFsdWUoY29udGFpbmVyLCA3KTsKfQ==
prog.cpp: In function ‘int find_value(const std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >&, int)’:
prog.cpp:16: error: using ‘typename’ outside of template