У меня проблемы с вставкой пары value_pairs в карту.Вот основная идея.
// private
typedef Foo* (*Bar)( const std::string &x, int y );
typedef std::map<std::string, Bar> myMap;
template<class T>
Foo* DoThing( const std::string &x, int y ) {
return new T( x, y );
}
myMap m_map;
// some map insertion code
m_map.insert( myMap::value_type( "blah", &DoThing<SomeType> ));
m_map.insert( myMap::value_type( "blech", &DoThing<OtherType> ));
Это может привести к ошибке компилятора, говорящей no matching function call to std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Foo* (*)(const std::string&, int)>::pair(const char [5], <unresolved overloaded function type>)
Не уверен, что я неправильно делаю синтаксис или почему получаю unresolved overloaded function type
.Я думаю, что он не знает, что DoThing
возвращает Foo*
.
Любая помощь приветствуется, спасибо.