2014-03-12 60 views
0

我試圖讓下面的代碼進行編譯:使用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; 

我記得,有一些特別的東西,你需要寫的時候要使用模板參數作爲參數傳遞給另一個模板,但我不記得是什麼了......

+3

我認爲你需要'typename'在模板參數之前。 –

回答

4

改變這一行:

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

到:

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

由於std::map<K, V>::iterator取決於你需要告訴它是一種編譯器模板參數。