Cerco di comprendere i tipi di espressione di C ++ e più leggo, più sono confuso, poiché trovo la bozza di C ++ molto difficile da digerire e quindi preferisco altre risorse ma si contraddicono a vicenda o non tengono conto del fatto che il la formulazione e la definizione tra le versioni C ++ cambiano pesantemente.
Di seguito mi riferisco alle seguenti bozze:
- C ++ 11 [ n3690 ] (bozza finale)
- C ++ 17 [ n4659 ] (bozza finale)
- C ++ 20 [ n4835 ] (bozza corrente)
C++11
3.10 Valori e valori... Un valore (valore "puro") è un valore che non è un valore x. [Esempio: il risultato della chiamata di una funzione il cui tipo restituito non è un riferimento è un valore. Anche il valore di un valore letterale come 12, 7.3e5 o true è un valore. - fine esempio]
C++17
3.10 Valori e valori... Un valore è un'espressione la cui valutazione inizializza un oggetto o un campo di bit o calcola il valore dell'operando di un operatore, come specificato dal contesto in cui appare.
C++20
7.2.1 Categorie di valori *... Un valore è un'espressione la cui valutazione inizializza un oggetto o un campo di bit o calcola il valore di un operando di un operatore, come specificato dal contesto in cui appare, o un'espressione che ha tipo cv void.
Comprenderei le modifiche alla formulazione e vengono apportate alcune modifiche, ma per me l'intera definizione cambia. Qualcuno può aiutarmi a capirlo? Ad esempio, perché è stata rimossa la frase che un valore è un valore che non è un valore x? O perché l'esempio utile è stato rimosso?