10
constexpr uint32_t BitPositionToMask(int i,int Size){
static_assert(i < Size,"bit position out of range");
return 1 << i;
}

これにより、次が生成されます。

error: non-constant condition for static assertion

GCC 4.6.2 で何かが得られないのですか、それとも GCC のバグですか?

4

2 に答える 2

20

関数は、実行時に評価される引数を使用して呼び出すこともできます (その場合、通常のconstexpr関数と同じように実行されます)。たとえば、このlive exampleを参照してください。

一方、 Astatic_assert()は、その条件がコンパイル時に評価できる定数式であることを厳密に要求します。

于 2013-07-10T18:03:36.200 に答える