Ошибка C++ при объявлении std::pair внутри класса шаблона
Я хочу избежать использования std::pair()
конструктор или std::make_pair()
функции при вставке в map
, Я также хочу знать статус успеха операции вставки, поэтому я не могу использовать operator[]
, Я попробовал следующий код, но он выдает ошибку компиляции.
template<typename TKey, typename TVal>
class Map
{
private :
std::map<TKey, TVal> m_holder;
public :
bool insert(TKey key, TVal val)
{
std::pair<std::map<TKey, TVal>::iterator, bool> ret;
/* ret = m_holder.insert(std::make_pair(key, val)); */
return 0;
}
};
int main()
{
return 0;
}
Ошибка:
Hello.cpp: In member function `bool Map<TKey, TVal>::insert(TKey, TVal)':
Hello.cpp:13: error: type/value mismatch at argument 1 in template parameter list for `template<class _T1, class _T2> struct std::pair'
Hello.cpp:13: error: expected a type, got ` std::map<TKey,TVal,std::less<_Key>,std::allocator<std::pair<const _Key, _Tp> > >::iterator'
Hello.cpp:13: error: invalid type in declaration before ';' token
Помоги мне решить проблему.
1 ответ
Решение
std::pair<typename std::map<TKey, TVal>::iterator, bool> ret;
// ~~~~~~~^