¿Por qué la comparación de dos parámetros de una función constexpr no es una condición constante para la afirmación estática?

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

esto genera:

error: non-constant condition for static assertion

en GCC 4.6.2 ¿No obtengo algo o es un error de GCC?

Actualizar: Gracias Andy por ser mi ángel guardián nerd otra vez. Ya que tengo los valores en tiempo de compilación de todos modos, acabo de convertirla en una plantilla y funciona según lo previsto.

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta