C ++ ifade türlerini anlamaya çalışıyorum ve ne kadar çok okursam, o kadar karıştı, çünkü C ++ taslağını sindirimi çok zor buluyorum ve bu nedenle diğer kaynakları tercih ediyorum ama ya birbirleriyle çelişiyorlar ya da C ++ sürümleri arasındaki ifadeler ve tanımlamalar büyük ölçüde değişir.
Aşağıda aşağıdaki taslaklara atıfta bulunuyorum:
C++11
3.10 Değerler ve değerler... Bir değer (“saf” değer) x değeri olmayan bir değerdir. [Örnek: Dönüş türü başvuru olmayan bir işlevi çağırmanın sonucu bir ön değerdir. 12, 7.3e5 veya true gibi bir değişmez değerin değeri de bir değerdir. - son örnek]
C++17
3.10 Değerler ve değerler... Bir ön değer, değerlendirmesi bir nesneyi veya bir bit alanını başlatan veya bir operatörün işleneninin, içinde göründüğü bağlam tarafından belirtildiği şekilde hesaplayan bir ifadedir.
C++20
7.2.1 Değer kategorileri *... Bir ön değer, değerlendirmesi bir nesneyi veya bit alanını başlatan ya da göründüğü bağlamla belirtildiği gibi bir işlecin işleneninin değerini veya cv void türüne sahip bir ifadeyi hesaplayan bir ifadedir.
İfade değişikliklerini anlıyorum ve bazı ayarlamalar yapılıyor, ancak benim için tüm tanım değişiklikleri. Birisi bunu anlamama yardımcı olabilir mi? Örneğin, neden bir değer, xvalue olmayan bir değerdir? Ya da faydalı örnek neden kaldırıldı?