Articles of templates

Quali sono le guide alla deduzione dei modelli e quando dovremmo utilizzarle?

Lo standard C ++ 17 introduce “guide alla deduzione dei modelli”. Ho capito che hanno qualcosa a che fare con la nuova deduzione degli argomenti del template per i costruttori introdotti in questa versione dello standard, ma non ho ancora visto una semplice spiegazione in stile FAQ su cosa sono e per cosa servono. Quali […]

qual è la procedura di ordinazione parziale nella deduzione del modello

Ho letto dello standard c ++ 11 ma non riesco a capire bene che il significato del seguente esempio è molto preferito. Due tipi di tipi vengono utilizzati per determinare l’ordine parziale. Per ciascuno dei modelli coinvolti c’è il tipo di funzione originale e il tipo di funzione trasformata. [Nota: la creazione del tipo trasformato […]

Vantaggi dell’auto nei parametri del modello in C ++ 17

Quali sono i vantaggi auto nei parametri del modello che verranno (eventualmente) introdotti con C ++ 17? È solo un’estensione naturale auto quando voglio istanziare il codice del template? auto v1 = constant; // v1 == 5, decltype(v1) is int auto v2 = constant; // v2 == true, decltype(v2) is bool auto v3 = constant; […]

Dettagli di istanziazione dei template dei compilatori GCC e MS

Qualcuno potrebbe fornire un confronto o dettagli specifici su come viene gestita l’istanziazione dei template durante la compilazione e / o il tempo di collegamento nei compilatori GCC e MS? Questo processo è diverso nel contesto delle librerie statiche, delle librerie condivise e degli eseguibili? Ho trovato questo documento su come GCC lo gestisce, ma […]

Cosa sono i Mixin (come concetto)

Sto cercando di capire il concetto di Mixin ma non riesco a capire di cosa si tratta. Il mio modo di vedere è che è un modo per espandere le capacità di una class usando l’ereditarietà. Ho letto che la gente si riferisce a loro come “sottoclassi astratte”. Qualcuno può spiegare perché? Ti sarei grato […]

Perché dovrei evitare std :: enable_if nelle firme delle funzioni

Scott Meyers ha pubblicato il contenuto e lo stato del suo prossimo libro EC ++ 11. Ha scritto che un elemento nel libro potrebbe essere “Evita std::enable_if nelle firme di funzioni” . std::enable_if può essere usato come argomento di funzione, come tipo di ritorno o come modello di class o parametro di modello di funzione […]

Modello di funzione variabile con espansione del pacchetto non nell’ultimo parametro

Mi chiedo perché il seguente codice non viene compilato: struct S { template S(T…, int); }; S c{0, 0}; Questo codice non riesce a compilare sia con clang che con GCC 4.8. Ecco l’errore con clang: test.cpp:7:3: error: no matching constructor for initialization of ‘S’ S c{0, 0}; ^~~~~~~ test.cpp:4:5: note: candidate constructor not viable: […]

Errore di riferimento non definito per il metodo template

Questo mi ha fatto impazzire per l’ultima ora e mezza. So che è una cosa piccola ma non riesco a trovare cosa c’è che non va (il fatto che sia un piovoso venerdì pomeriggio, ovviamente, non aiuta). Ho definito la seguente class che conterrà i parametri di configurazione letti da un file e mi consentirà […]

Errore “uso non valido di tipo incompleto” con specializzazione del modello parziale

Il seguente codice: template struct foo { void bar(); }; template void foo ::bar() { } mi dà l’errore invalid use of incomplete type ‘struct foo’ declaration of ‘struct foo’ (Sto usando gcc.) La mia syntax per la specializzazione parziale è errata? Si noti che se rimuovo il secondo argomento: template struct foo { void […]

Determina se un tipo è un contenitore STL in fase di compilazione

Vorrei scrivere un modello che determinerà se un tipo è un contenitore stl in fase di compilazione. Ho il seguente bit di codice: struct is_cont{}; struct not_cont{}; template struct is_cont { typedef not_cont result_t; }; ma non sono sicuro di come creare le specializzazioni necessarie per std::vector, deque, set etc …