ошибка constexpr во время компиляции, но без издержек во время выполнения

Существует хорошо известная хитрость, которая вызывает ошибку времени компиляции при вычисленииconstexpr функция, делая что-то вроде этого:

constexpr int f(int x) {
    return (x != 0) ? x : throw std::logic_error("Oh no!");
}

И если функция используется вconstexpr контекст вы получите ошибку во время компиляции, еслиx == 0, Если аргументf не являетсяconstexprоднако тогда он выдаст исключение во время выполнения, еслиx == 0, что не всегда желательно по причинам производительности.

Похож на теориюassert охраняетсяNDEBUGЕсть ли способ вызвать ошибку времени компиляции сconstexpr функционировать, но ничего не делать во время выполнения?

Наконец, сделать расслабленнымconstexpr правила в C ++ 1y (C ++ 14) что-нибудь меняют?

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

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