是否可以在C ++中使用编译时断言

时间:2012-06-02 23:39:05

标签: c++ assert

我想使用模板进行一些数据处理,但我需要在移植时使代码更安全或更不安全。

如果变量的大小超出预期值,这可能是一个问题,所以我想在编译时断言某些假设仍然有效。

例如,sizeof(long)>sizeof(int),如果这个假设失败,我可以打破构建。

我知道标准要求long>=int,但这只是一个例子,不要专注于变量类型。

1 个答案:

答案 0 :(得分:2)

C ++ 11有static_assert

static_assert(sizeof(long) > sizeof(int), "long must be greater than int");

在较旧的编译器上,您可以使用Boost.StaticAssert

BOOST_STATIC_ASSERT(sizeof(long) > sizeof(int));