Dlaczego porównywanie dwóch parametrów funkcji constexpr nie jest warunkiem stałym dla asercji statycznej?
constexpr uint32_t BitPositionToMask(int i,int Size){
static_assert(i < Size,"bit position out of range");
return 1 << i;
}
to generuje:
error: non-constant condition for static assertion
w GCC 4.6.2 Czy nie dostaję czegoś lub jest to błąd GCC?
Aktualizacja: dziękuję Andy za to, że znowu był moim głupim aniołem stróżem. Ponieważ mam wartości w czasie kompilacji, po prostu stworzyłem szablon i działa on zgodnie z przeznaczeniem.
template<int i,int Size>
constexpr uint32_t BitPositionToMask(){
static_assert(i < Size,"bit position out of range");
return 1 << i;
}