Articles of metaprogramming

Compilare il tempo size_array senza utilizzare una macro

Questo è solo qualcosa che mi ha infastidito per l’ultimo paio di giorni, non penso che sia ansible risolvere, ma ho visto magia modello prima. Ecco qui: Per ottenere il numero di elementi in un array C ++ standard, potrei usare una macro (1) o una funzione inline types (2): (1) #define sizeof_array(ARRAY) (sizeof(ARRAY)/sizeof(ARRAY[0])) (2) […]

Enumerare su un enum in C ++

In C ++, è ansible enumerare su un enum (sia runtime che tempo di compilazione (preferito)) e chiamare funzioni / generare codice per ogni iterazione? Caso di utilizzo del campione: enum abc { start a, b, c, end } for each (__enum__member__ in abc) { function_call(__enum__member__); } Duplicati plausibili: C ++: Iterate attraverso un enum […]

Esempi di CINA-SFINAE?

Voglio entrare in più meta-programmazione template. So che SFINAE sta per “il fallimento della sostituzione non è un errore”. Ma qualcuno può mostrarmi un buon uso per SFINAE?

Esecuzione di codice per ogni chiamata di metodo in un modulo Ruby

Sto scrivendo un modulo in Ruby 1.9.2 che definisce diversi metodi. Quando uno di questi metodi viene chiamato, voglio che ognuno di loro esegua prima una determinata affermazione. module MyModule def go_forth a re-used statement # code particular to this method follows … end def and_multiply a re-used statement # then something completely different … […]

Javascript ha qualcosa come la funzione method_missing di Ruby?

In Ruby penso che sia ansible chiamare un metodo che non è stato definito e tuttavia acquisire il nome del metodo chiamato e eseguire l’elaborazione di questo metodo in fase di runtime. Javascript può fare lo stesso genere di cose?

Ottieni il nome del metodo attualmente in esecuzione

$0 è la variabile per il programma Ruby di primo livello, ma ce n’è una per il metodo corrente?

SFINAE per verificare le funzioni dei membri ereditati

Usando SFINAE, posso rilevare se una determinata class ha una certa funzione membro. Ma cosa succede se voglio testare le funzioni dei membri ereditati? Quanto segue non funziona in VC8 e GCC4 (cioè rileva che A ha una funzione membro foo() , ma non che B erediti una): #include template struct has_foo { template struct […]

Crea in modo programmatico array statici in fase di compilazione in C ++

Si può definire una matrice statica in fase di compilazione come segue: const std::size_t size = 5; unsigned int list[size] = { 1, 2, 3, 4, 5 }; Domanda 1 – È ansible utilizzare vari tipi di tecniche di metaprogrammazione per assegnare questi valori “programmaticamente” in fase di compilazione? Domanda 2 – Supponendo che tutti […]

Compilare l’hashing della stringa del tempo

Ho letto in pochi punti diversi che usando i nuovi string letterali del C ++ 11 potrebbe essere ansible calcolare l’hash di una stringa in fase di compilazione. Tuttavia, nessuno sembra essere pronto per uscire e dire che sarà ansible o come sarebbe stato fatto. È ansible? Come sarebbe l’operatore? Sono particolarmente interessato a casi […]

Convenientemente dichiarare stringhe di compilazione in C ++

Essere in grado di creare e manipolare stringhe durante la compilazione in C ++ ha diverse applicazioni utili. Sebbene sia ansible creare stringhe in fase di compilazione in C ++, il processo è molto macchinoso, poiché la stringa deve essere dichiarata come una sequenza variadica di caratteri, ad esempio using str = sequence; Operazioni come […]