В С++ 17 разрешено ли изменять глобальные переменные в функции constexpr
?
#include <iostream>
int global = 0;
constexpr int Foo(bool arg) {
if (arg) {
return 1;
}
return global++;
}
int main() {
std::cout << global;
Foo(true);
std::cout << global;
Foo(false);
std::cout << global;
}
Я бы не ожидал, что вы сможете, но clang 6 позволяет это: https://godbolt.org/g/UB8iK2
GCC, однако, не делает: https://godbolt.org/g/ykAJMA
Какой компилятор прав?