Какая разница, если я использую константную ссылку в качестве параметра для функции constexpr вместо типа? - PullRequest
1 голос
/ 25 апреля 2020

У меня есть следующий код:

inline constexpr int fibo(unsigned const &i) {
    if (i == 0) return 0;
    if (i == 1 || i == 2) return 1;

    return fibo(i - 1) + fibo(i - 2);
}

Я получил следующее сообщение об ошибке:

  • Количество операций оценки 'constexpr' превышает предел 33554432 (используйте -fconstexpr-ops -limit = для увеличения предела)
  • ошибка: непостоянное условие для stati c утверждение static_assert (1'836'311'903 == fibo (46), "fibo (46)");

Но если я использую следующее определение:

inline constexpr int fibo(unsigned i);

Я не получаю сообщение об ошибке?

Каковы последствия, если я использую const &

...