Когда функция constexpr оценивается во время компиляции?

Поскольку возможно, что функция, объявленная как constexpr, может быть вызвана во время выполнения, по каким критериям компилятор решает, вычислять ли ее во время компиляции или во время выполнения?

template
constexpr base_t POW(base_t base, expo_t expo)
{
    return (expo != 0 )? base * POW(base, expo -1) : 1;
}

int main(int argc, char** argv)
{
    int i = 0;
    std::cin >> i;

    std::cout < POW(i, 2) < std::endl;
    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос