Por que comparar dois parâmetros de uma função constexpr não é uma condição constante para asserção estática?

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

isso gera:

error: non-constant condition for static assertion

no GCC 4.6.2 Eu não estou recebendo algo ou isso é um bug do GCC?

Atualizar: obrigado Andy por ser meu anjo da guarda nerd novamente. Desde que eu tenho os valores em tempo de compilação de um modo que eu fiz apenas um modelo e funciona como pretendido.

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

questionAnswers(1)

yourAnswerToTheQuestion