使用C ++模板参数作为另一个模板的参数? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C ++模板参数作为另一个模板的参数? [重复]相关的知识,希望对你有一定的参考价值。

我正在尝试获取下面的代码来编译:

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依赖于模板参数,因此需要告诉编译器它是一种类型。

以上是关于使用C ++模板参数作为另一个模板的参数? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 另一个使用c ++ 11和可变参数模板的代理

C++17,制作一个使用依赖于模板参数的 std::variant 的可变参数模板?

C++ 使用指向相同函数的指针作为模板参数是不是总是会导致相同的实例化?

使用嵌套类作为参数的朋友模板声明

什么是模板推导中的部分排序程序

c ++:在完全定义类之前使用类作为模板参数