【发布时间】:2010-08-14 02:27:43
【问题描述】:
我最近发现需要在 C++ 中使用编译时断言来检查两种类型的大小是否相等。
我在网上找到了以下宏(据说来自Linux内核):
#define X_ASSERT(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
我是这样使用的:
X_ASSERT(sizeof(Botan::byte) != sizeof(char));
这让我很好奇 - 虽然这工作,有没有更清洁的方式来做到这一点? (显然有不止一种方法,事实上)某些方法有优点还是缺点?
【问题讨论】:
-
感谢大家的所有回答,非常有趣。我很高兴看到 C++0x 得到了
static_assert,我不记得以前读过它。 ;)
标签: c++