Это то, что я пытаюсь (и не могу) заставить работать. Идея состоит в том, что count<N>
должно быть равно N
. Это упрощенный случай более сложных вычислений, не обращайте внимания на кажущуюся глупость этого кода.
template <>
constexpr size_t count<0> = 0;
template <auto N>
constexpr size_t count = 1 + count<static_cast<size_t>(N) - 1>;
int main()
{
return count<1>;
}
Не компилируется:
<source>:5:23: error: expected initializer before '<' token
constexpr size_t count<0> = 0;
^
Если я поменяю общий случай со специализацией, он также не скомпилируется. Это даже выполнимо с переменными шаблонами?
Попробуйте онлайн