ho recentemente venuto sulla necessità di avere asserzioni a tempo di compilazione in C++ per verificare che le dimensioni di due tipi erano uguali.Asserzioni in fase di compilazione in C++?
ho trovato la seguente macro sul web (dichiarato di essere venuto dal kernel Linux):
#define X_ASSERT(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
che ho usato in questo modo:
X_ASSERT(sizeof(Botan::byte) != sizeof(char));
Questo mi fa strano - anche se questo funziona, c'è un modo più pulito per farlo? (Ovviamente c'è più di un modo, com'è) Ci sono vantaggi o svantaggi di certi metodi?
Grazie per tutte le risposte a tutti, molto interessante. Sono felice di vedere che il C++ 0x sta ottenendo 'static_assert', non ricordo di averlo letto prima. ;) –