Вывести параметр шаблона не типа

Возможно ли вывести параметр шаблона не типа из параметра шаблонной функции?

Рассмотрим этот простой шаблон:

template <int N> constexpr int factorial()
{
        return N * factorial<N - 1>();
}

template <> constexpr int factorial<0>()
{
        return 1;
}

template <> constexpr int factorial<1>()
{
        return 1;
}

Я хотел бы иметь возможность изменить factorial так, чтобы я мог альтернативно вызывать его следующим образом:

factorial(5);

и позволить компилятору определить значение N во время компиляции. Возможно ли это? Может быть, с каким-нибудь причудливым дополнением C++11?

7
задан Deduplicator 21 October 2018 в 23:14
поделиться