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

Is it possible to use compile time asserts in C++

本文关键字:编译 断言 C++ 是否      更新时间:2023-10-16

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

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

例如,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));