typename
W definicjach szablonów zawiera wskazówkę dla kompilatora, typename
że nieznany identyfikator jest typem. Na listach parametrów szablonu służy do określania parametru typu.
Składnia
typename
identifier
;
Uwagi
Słowo typename
kluczowe musi być używane, jeśli nazwa w definicji szablonu jest kwalifikowaną nazwą zależną od argumentu szablonu. Jest to opcjonalne, jeśli nazwa kwalifikowana nie jest zależna. Aby uzyskać więcej informacji, zobacz Szablony i rozpoznawanie nazw.
typename
Może być używany przez dowolny typ w dowolnym miejscu w deklaracji lub definicji szablonu. Nie jest to dozwolone na liście klas bazowych, chyba że jako argument szablonu do klasy bazowej szablonu.
template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType> // typename OK.
{};
Słowo typename
kluczowe może być również używane zamiast na listach parametrów class
szablonu. Na przykład następujące instrukcje są semantycznie równoważne:
template<class T1, class T2>...
template<typename T1, typename T2>...
Przykład
// typename.cpp
template<class T> class X
{
typename T::Y m_y; // treat Y as a type
};
int main()
{
}
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla