Tengo dificultades para encontrar una buena razón por la cual no se compila el siguiente código. Me da el siguiente error.No se puede usar el argumento de la plantilla en la declaración de función
error 2 error C2923: 'std :: par': 'std :: set :: iterador' no es un argumento de tipo de plantilla válido para el parámetro '_Ty1'
necesito un poco de conocimiento , en cuanto a por qué C++ no me permite usar el parámetro de plantilla en la declaración de función, porque utilizo el conjunto < int> :: iterator en lugar de establecer < T> :: iterator, el programa funciona.
#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);
}