View Single Post
Old 23-10-2014, 00:25   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
In soldoni il codice in questione viene tradotto così' :

Codice PHP:
class FACT_0 {
public:
    static 
int EXEC() {
        return 
1;
    }
};

class 
FACT_1 {
public:
    static 
int EXEC() {
        return 
FACT_0::EXEC();
    }
};

class 
FACT_2 {
public:
    static 
int EXEC() {
        return 
FACT_1::EXEC();
    }
};

class 
FACT_3 {
public:
    static 
int EXEC() {
        return 
FACT_2::EXEC();
    }
};

int main() {
  
cout << FACT_3::EXEC();

Devi pensare alla meta programmazione come a una macro più' potente e typesafe.

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:
int main() {
  
cout << 6;

Non hai la certezza che pero' questo avvenga purtroppo

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso