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;
}

questionAnswers(1)

yourAnswerToTheQuestion