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 のバグですか?
関数は、実行時に評価される引数を使用して呼び出すこともできます (その場合、通常のconstexpr
関数と同じように実行されます)。たとえば、このlive exampleを参照してください。
一方、 Astatic_assert()
は、その条件がコンパイル時に評価できる定数式であることを厳密に要求します。