У меня есть такой метод
template<typename T, typename U>
map<T,U> mapMapValues(map<T,U> old, T (f)(T,U))
{
map<T,U> new;
for(auto it = old.begin(); it != old.end(); ++it)
{
new[it->first] = f(it->first,it->second);
}
return new;
}
и идея состоит в том, что вы бы назвали это следующим образом
BOOST_AUTO_TEST_CASE(MapMapValues_basic)
{
map<int,int> test;
test[1] = 1;
map<int,int> transformedMap = VlcFunctional::mapMapValues(test,
[&](int key, int value) -> int
{
return key + 1;
}
);
}
Однако я получаю ошибку: ни один экземпляр шаблона функции "VlcFunctional:: mapMapValues" не соответствует типам аргументов list: (std:: map, std:: allocator → , __lambda1)
Любая идея, что я делаю неправильно? Компилятор Visual Studio 2008 и Intel С++ 11.1