A continuación se presentan dos casos de prueba para Comportamiento indefinido, expresados como IIFE (Inmediatamente llamado Axda-Lambda):
constexpr auto test3 = []{
int* p{};
{
int x{};
p = &x;
}
return *p; // Undefined Behaviour
}(); // IIFE
constexpr auto test4 = []{
int x = std::numeric_limits<int>::min();
int y = -x; // Undefined Behaviour
return y;
}();
int main() {}
Cuando se compila con el tronco GCC, test4se rechaza correctamente ya que muestra Comportamiento indefinido en a constexpr. Por otro lado test3se acepta.
¿GCC tiene derecho a aceptar test3?
c++
undefined-behavior
constexpr
avr-gcc
wimalopaan
fuente
fuente

Respuestas:
No, este es un error de GCC. Acabo de informarlo como error # 93389 .
fuente