Я изо всех сил пытаюсь найти вескую причину, почему следующий код не компилируется.Это дает мне следующую ошибку.
Ошибка 2 ошибка C2923: 'std :: pair': 'std :: set :: iterator' не является допустимым аргументом типа шаблона для параметра '_Ty1'
Мне нужно немного понять, почему C ++ не позволяет мне использовать параметр шаблона в объявлении функции, потому что я использую set :: iterator вместо set :: итератор, программа работает.
#include<iostream>
#include<set>
using namespace std;
template <typename T>
void print(const pair< set<T>::iterator, bool> &p) //<- Here is the problem
{
cout<<"Pair "<<*(p.first)<<" "<<p.second<<"\n";
}
int main() {
set<int> setOfInts;
setOfInts.insert(10);
pair<set<int>::iterator, bool > p = setOfInts.insert(30);
}