|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[C++] Template Metaprogramming
Salve,
ho dei dubbi riguardo la metaprogrammazione. Prendiamo ad esempio questo codice, che non sono sicuro al 100% sia metaprogrammazione (perché l'ho modificato usando del codice trovato) Codice PHP:
Volevo sapere come funziona esattamente. In particolare: so che le istruzioni metaprogrammate vengono eseguite a compile time, ma questo significa che posso usare qualsiasi istruzione? Ad esempio il return, che valore ha se eseguito a compile time, ha lo stesso effetto? Nell'esempio, quale è l'esatto codice che si ottiene nel main una volta analizzato il metaprogramma? La dichiarazione template<int i>, non dovrebbe essere una specializzazione di un template esistente? Cioè dichiarare prima un template<typename T> con del codice generico e poi quello con del codice speciale? Perché non posso testare direttamente nella funzione della classe template il valore di i. Codice PHP:
Ultima modifica di biowep : 20-10-2014 alle 19:03. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
In soldoni il codice in questione viene tradotto così' :
Codice PHP:
Il codice viene generato in fase di compilazione e poi compilato normalmente, ma questo internamente al compilatore, senza alcun preprocessore in mezzo come per le macro in C. Una volta che quel codice che ho postato di sopra viene mandato al code-generator probabilmente verra' ottimizzato dagli inliner in : Codice PHP:
![]() Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:23.