Почему сравнение двух параметров функции constexpr не является постоянным условием для статического утверждения?

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?

Обновить:&nbsp;спасибо Энди за то, что снова стал моим ангелом-хранителем. Так как у меня есть значения во время компиляции, я просто сделал это шаблоном, и он работает как задумано.

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