次のコードがコンパイルされない理由がわかりません。 以下のエラーが表示されます。関数の宣言でテンプレート引数を使用できません
エラー2エラーC2923: 'STD ::ペア': 'のstd ::セット::イテレータは' パラメータの有効なテンプレート型引数ではありません '_Ty1'
私は少し洞察力を必要としますなぜ、私は関数の宣言でテンプレートパラメータを使用することができないのですか?C++では、< T> :: iteratorがセットされているのではなく、< int> :: iteratorを使用しています。
#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);
}