Как сообщить static_assert, что аргументы функции constexpr являются константами?

У меня есть функция constexpr, которая выглядит примерно так:

constexpr int foo(int bar)
{
   static_assert(bar>arbitrary_number, "Use a lower number please");

   return something_const;
}

Однако компиляция с GCC 4.6.3 продолжает выдавать мне

ошибку: 'bar' не может появляться в константном выражении

Я пробовал что-то вроде

constexpr int foo(constexpr const int bar)
{
   static_assert(bar>arbitrary_number, "Use a lower number please");

   return something_const;
}

, но constexpr нельзя использовать для аргументов функций.

Есть ли простой способ сообщить компилятору, что bar всегда является константой времени компиляции?

9
задан TravisG 20 March 2012 в 15:41
поделиться