1

一部のデータ処理にテンプレートを使用したいのですが、移植時にコードを多かれ少なかれ安全にする必要があります。

変数のサイズが予想値を超えた場合、これは問題になる可能性があるため、コンパイル時にいくつかの仮定がまだ有効であると断言したいと思います。

たとえばsizeof(long)>sizeof(int)、、この仮定が失敗した場合、ビルドを中断する可能性があります。

標準ではそれが義務付けられていることは知っていますlong>=intが、これは単なる例であり、変数の型に集中しないでください。

4

1 に答える 1

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));
于 2012-06-02T23:40:58.980 に答える