2016-09-10 25 views
5

Constexpr işlevlerinde GCC 6 ve 7'de (GCC 5'te değil) bir hata buldum; bu, işlev derleme zamanında değerlendirilirse farklı sonuçlara yol açar (yanlış sonuç) veya çalışma zamanı (doğru sonuç). GCC Hata - Constexpr'de Giriş/Azaltma dizisi erişimi

#include <iostream> 

constexpr int bar(int *b) { 
    int i = 0; 
    b[i++] = 1; // GCC produce here an failure. 

    return 0; 
} 

constexpr int foo() 
{ 
    int tmp[] = {0}; 
    bar(tmp); 

    return tmp[0]; 
} 

constexpr int cexprI = foo(); 

int main() 
{ 
    std::cout << cexprI << " " << foo() << "\n"; 

    return 0; 
} 

Live Example

sorun

dizi erişim içinde artış (aynı zamanda azaltmaya yönelik gerçekleşir) bir işlemdir.

Sabit ifadenin derleme zamanı sonucu 0 (yanlış) ve çalışma zamanı 1'dir (doğru).

herkes bu hatayı onaylamak ve bu rapor Could: Orada User account creation has been restricted. bir hesap oluşturamazsınız https://gcc.gnu.org/bugzilla/

. Yönetici ile temasa geçtim, ama benim için hata eleştirmek için çok önemli. Bu yüzden sizi bilgilendirmek istedi. Teşekkür ederim!

cevap