Следующий код в порядке:
constexpr double square_cstxpr(double x) { return x * x; }
int main() {
const int test = 5;
constexpr double result = square_cstxpr((double)test);
}
Однако, если тип test
изменен с const int
на const double
, g++ дает следующую ошибку: the value of 'test' is not usable in a constant expression
.
Смотрите код и вывод g++ здесь: http://coliru.stacked-crooked.com/a/2fe9b176c2b23798
Может ли кто-нибудь объяснить это поведение?