使用c++模板形参作为另一个模板的实参

Using C++ template parameter as argument to another template?

本文关键字:另一个 实参 形参 c++ 使用      更新时间:2023-10-16

我想让下面的代码编译:

template <typename K, typename V>
static void addMapping(const K& id, const V& index, std::map<K, V>& mapset) 
{
    std::pair< std::map<K, V>::iterator, bool > ret;
    // ...
}

但是我得到以下错误信息:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _T1, class _T2> struct std::pair’
     std::pair< std::map<K, V>::iterator, bool > ret;

我记得当你想使用一个模板形参作为另一个模板的参数时,你需要写一些特别的东西,但我不记得那是什么了…

改变这一行:

std::pair< std::map<K, V>::iterator, bool > ret;

为:

std::pair< typename std::map<K, V>::iterator, bool > ret;

由于std::map<K, V>::iterator依赖于模板参数,你需要告诉编译器它是一个类型