C++ 是否可以在C++;

C++ 是否可以在C++;,c++,assert,C++,Assert,我想使用一个模板进行一些数据处理,但我需要的代码在移植时或多或少是安全的 如果变量的大小超出了预期值,这可能是一个问题,所以我想在编译时断言一些假设仍然有效 例如,sizeof(long)>sizeof(int),因此如果这个假设失败,我可能会破坏构建 我知道标准要求long>=int,但这只是一个示例,不要集中于变量类型。C++11具有静态断言: static_assert(sizeof(long) > sizeof(int), "long must be greater than in

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

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

例如,
sizeof(long)>sizeof(int)
,因此如果这个假设失败,我可能会破坏构建


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

C++11具有
静态断言

static_assert(sizeof(long) > sizeof(int), "long must be greater than int");
在较旧的编译器上,您可以使用


看看你的问题是什么?在c++11中有
static\u assert
。在较旧的编译器上不使用boost就可以实现此功能吗?这是内部的模板技巧吗?@Coder文档中有一页解释您是否想自己实现它。这一点和实际实现应该足够了。@coder您可以在这里看到旧编译器的一个实现:链接中缺少的一个类似于linux内核中的一个,但定义了一个新类型:
#define static_assert(x)typedef char assert_35;#35; uuuuu line_uuu[1-2*!(x)](或者类似的,我从来没有想到过预处理器和###操作符。。。
BOOST_STATIC_ASSERT(sizeof(long) > sizeof(int));