我想使用模板进行一些数据处理,但我需要代码在移植时或多或少是安全的。
如果变量的大小超出预期值,这可能是一个问题,所以我想在编译时断言一些假设仍然有效。
例如,sizeof(long)>sizeof(int)
如果这个假设失败,我可以破坏构建。
我知道标准要求long>=int
,但这只是一个例子,不要专注于变量类型。
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));