Modelli e risoluzione dei nomi

Nelle definizioni di modello, esistono tre tipi di nomi.

  • Nomi in locale dichiarati, incluso il nome del modello stesso e i nomi dichiarati nella definizione di modello.

  • Nomi contenuta nell'esterno della definizione di modello.

  • I nomi che dipendono in qualche modo dagli argomenti di modello, noti come dipendente nome.

Durante i primi due nomi vengono illustrate anche per classificare e utilizzare ambiti, le regole specifiche per la risoluzione dei nomi sono necessarie nelle definizioni di modello gestire la complessità aggiunta dei nomi dipendenti.Perché il compilatore riconosce piccolo su questi nomi e alla creazione di un'istanza del modello, poiché potrebbero essere tipi completamente diverse in base agli argomenti di modello vengono utilizzati.I nomi di Nondependent vengono trovati in base alle regole normali e al momento della definizione del modello.Questi nomi, è indipendente dagli argomenti di modello, sono specializzazioni una volta per tutte la ricerca del modello.I nomi dei dipendenti non vengono individuati solo dopo la creazione di un'istanza del modello e sono disponibili separatamente per ogni specializzazione.

un tipo è dipendente se dipende dagli argomenti di modello.In particolare, un tipo è dipendente se è:

  • Argomento di template stesso:

    T
    
  • Un nome completo con una qualificazione incluso un tipo dipendente:

    T::myType
    
  • Un nome completo se la parte non qualificata identifica un tipo dipendente:

    N::T
    
  • un const o un tipo volatile per il quale il tipo di base è un tipo dipendente:

    const T
    
  • Un puntatore, un riferimento, una matrice, o un tipo puntatore a funzione basato su un tipo dipendente:

    T *, T &, T [10], T (*)()
    
  • Una matrice le cui dimensioni sono basata su un parametro di modello:

    template <int arg> class X {
    int x[arg] ; // dependent type
    }
    
  • un tipo di modello costruito da un parametro di modello:

    T<int>, MyTemplate<T>
    

Dipendenza di tipo e dipendenza di valore

I nomi e le espressioni dipendenti da un parametro di modello sono suddivisi in categorie come tipo dipendente o che il dipendente, come se il parametro di template è un parametro di tipo o un parametro di valore.Inoltre, tutti gli identificatori dichiarati nel modello con un dipendente dal tipo nell'argomento di modello sono considerati dipendente di valore, poiché è un tipo integrale o un tipo di enumerazione viene inizializzata con un'espressione valore-dipendente.

le espressioni Tipo-dipendenti e valore-dipendenti sono espressioni che includono le variabili dei tipi dipendente o che il dipendente.Queste espressioni possono avere semantica che differiscono, a seconda dei parametri utilizzati per il modello.

Vedere anche

Altre risorse

Modelli