Udostępnij za pośrednictwem


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.

Zobacz też

Inne zasoby

Szablony