Szablony i rozpoznawanie nazw
Istnieją trzy typy nazw w definicjach szablonu.
Lokalnie zgłoszone nazwy, wraz z nazwą szablonu, sama i wszelkie nazwy zadeklarowane wewnątrz definicji szablonu.
Nazwy z zakresu otaczający poza definicją szablonu.
Nazwy, które zależą w jakiś sposób argumenty szablonu, określane jako nazwy zależne.
Podczas pierwszych dwóch nazw również odnosić się do klasy i funkcja zakresów, specjalne przepisy dotyczące rozpoznawania nazw są wymagane w definicjach szablonu do zajmowania się dodatkowych komplikacji nazwy zależne.Jest tak, ponieważ kompilator wie niewiele o tych nazwach aż szablon zostanie uruchomiony, ponieważ mogą być całkowicie różnych typów, w zależności od tego, który szablon argumenty są używane.Niepokrewnymi nazwy są wyszukiwane, zgodnie ze zwykłymi regułami i w punkcie uderzenia definicja szablonu.Nazwy te są niezależne od argumentów szablonu są wyszukiwane tylko raz dla wszystkich specjalności szablonu.Nazwy zależnych nie można przejrzeć dopóki tworzeniu wystąpienia szablonu i są wyszukiwane oddzielnie dla każdej specjalizacji.
Typ jest zależna, jeśli zależy to od argumentów szablonu.W szczególności typu jest zależny, jeśli jest:
Argument szablonu, sama:
T
Kwalifikowana nazwa z kwalifikacji, w tym typ zależnych:
T::myType
Nazwa kwalifikowana Jeśli niekwalifikowanych część identyfikuje typ zależnych:
N::T
Const lub volatile typu, dla którego typ podstawowy jest typu zależnych:
const T
Wskaźnik, odwołanie, tablica lub typu wskaźnik funkcji, na podstawie typu zależnych:
T *, T &, T [10], T (*)()
Tablica, której rozmiar jest oparta na parametr szablonu:
template <int arg> class X { int x[arg] ; // dependent type }
Typ szablonu, wykonane z parametrem szablonu:
T<int>, MyTemplate<T>
Zależność typu i wartość zależność
Nazwy i wyrażenia zależne od parametru szablonu są klasyfikowane jako typ zależne lub wartości zależnych, w zależności od tego, czy parametr szablonu jest parametrem typu lub wartości parametru.Również wszystkich identyfikatorów zadeklarowane w szablonie typu zależne od argumentu szablon za wartość zależnych, jest typu Całka lub wyliczanie zainicjowane za pomocą wyrażenia wartości zależnych.
Zależne od typu i zależne od wartości wyrażeń są wyrażenia, które obejmują zmienne, które są zależne od typu lub wartości zależnych.Wyrażenia te mogą mieć semantykę, które różnią się w zależności od parametrów używanych dla szablonu.