2011-10-15 21 views
11

işlevi derleniyor Neden bu derleme yapmıyor:
Bir dönüş türü olarak string ile ilgili bir sorun olabilir mi?Constexpr işlevi döndürülüyor

constexpr std::string fnc() 
{ 
    return std::string("Yaba"); 
} 

cevap

14

char için bir işaretçi alır std::string yapıcı constexpr değildir. constexpr işlevlerinde yalnızca constexpr işlevlerini kullanabilirsiniz.

+0

Teşekkürler, daha önce bilmiyordum. – smallB

+2

+1 ve bu kurucunun "constexpr" olamamasının nedeni, derleme zamanında gerçekleştirilemeyen yan etkilere (yani tahsise) sahip olmasıdır. –

+0

Ama bunun (bu örnek) biraz aptalca olduğunu düşünmüyor musunuz? Dize değişmezi const, bu yüzden gelecekte bu tür yapılara izin vermek için string katsayısı constexpr yapılmalıdır. – smallB

İlgili konular