Qual è il nome di un tipo definito da un modello? [chiuso]

0

Per dare un esempio completo, diciamo che ho una classe template che ora uso per generare una definizione di tipo:

template <typename T>
struct A {};

using X = // I'm not asking about this
  A<int>; // I want to know what this is

Qual è il nome di A<int> ? Inizialmente pensavo che fosse una specializzazione generica di A , perché ricordo di averlo letto da qualche parte in riferimento allo standard, ma non riesco a trovarlo ora.

La risposta dovrebbe fare riferimento allo standard o, se ciò non è possibile, citare una fonte autorevole che imposta una sorta di precedente per come è denominato.

So che questo tipo di domande sono al limite, ma non conosco nessun altro posto per chiederle e ho fatto del mio meglio per affrontare i punti sollevati in questo meta discussione sulle domande sulla denominazione .

    
posta quant 19.10.2014 - 01:15
fonte

2 risposte

4

È solo un alias: prende A<T> , lo istanzia con T=int e lo chiama X

Dichiara X a; e a sarà un A<int> .

La documentazione è come cppreference

Ecco alcuni riferimenti.

Informazioni su A è un "modello di istanza": il tipo generico A è compilato usando int nel posto di T .

È come vector<int> rispetto a vector<double> a partire da vector<T>

    
risposta data 19.10.2014 - 09:02
fonte
1

L'efficace Modern C ++ di Scott Meyers menziona "i modelli di funzione (cioè i modelli che generano funzioni) e le funzioni del modello (cioè le funzioni generate dai modelli di funzione)."

A può essere chiamato un modello struct e A<int> può essere chiamato struct template.

    
risposta data 19.10.2014 - 13:19
fonte

Leggi altre domande sui tag