假设我有:
std::map<K, V1> m1;
std::multimap<K, V2> m2;
Run Code Online (Sandbox Code Playgroud)
我想按容器类型和键/值类型模板.但是以下不起作用:/
template <typename T>
void do_something(T var)
{
// do something
}
template <typename TContainer, typename TKey, typename TVal>
void func(const TContainer<TKey, TVal>& container)
{
for (typename TContainer<TKey, TVal>::iterator it = container.begin(); it != container.end(); ++it)
{
do_something(it->second);
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用它:
func(m1);
func(m2);
Run Code Online (Sandbox Code Playgroud)