Утверждения времени компиляции в C++?

Я недавно натолкнулся на потребность иметь утверждения времени компиляции в C++, чтобы проверить, что размеры двух типов были равны.

Я нашел следующий макрос в сети (указанным для прибытия из ядра Linux):

#define X_ASSERT(condition) ((void)sizeof(char[1 - 2*!!(condition)]))

как который я использовал так:

X_ASSERT(sizeof(Botan::byte) != sizeof(char));

Это получает меня любопытный - хотя это работает, там более чистый способ сделать так? (очевидно, существует больше чем один путь, как это), там преимущества или недостатки к определенным методам?

5
задан Jake Petroules 14 August 2010 в 02:27
поделиться