GCC, kötü biçimlendirilmiş bir constexpr lambda çağrısını bildiremedi


9

Aşağıda Tanımlanmamış Davranış için IIFE (Hemen Lambda-Axpression olarak adlandırılır) olarak ifade edilen iki test durumu bulunmaktadır:

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() {}

GCC gövdesi ile derlendiğinde, test4a'de Tanımsız Davranış sergilediğinden doğru bir şekilde reddedilir constexpr. Öte yandan test3kabul edilir.

GCC kabul etme hakkı var mı test3?


4
@ formerlyknownas_463035818 Standart, bir bağlamda TÜM UB'nin teşhis edilmesini gerektirir.
NathanOliver

@NathanOliver oh teşekkürler. Bu nasıl öğrenirim, hatalar
yaparım

Evet. Bir GCC hatası gibi görünüyor
NathanOliver

Rapor edeceğim.
wimalopaan

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.