Come regola generale, decltype
conserva constness:Perché decltype rimuove const dai tipi restituiti per i tipi predefiniti?
const int ci = 0;
decltype(ci) x; // x is const int
x = 5; // error--x is const
class Gadget{}:
const Gadget makeCG(); // factory
decltype(makeCG()) y1, y2; // y1 and y2 are const Gadgets
y1 = y2; // error--y1 is const
Ma per i tipi di const
di ritorno che restituiscono tipi fondamentali, decltype
sembra gettare const
via:
const int makeCI(); // factory
decltype(makeCI()) z; // z is NOT const
z = 5; // okay
Perché decltype
scarto costanza in questo caso ? Intendo la domanda in due modi:
- Quale parte dello standard specifica questo comportamento?
- Qual è la motivazione per specificare il comportamento in questo modo?
Grazie.
Perché mai vorresti ritorno per valore const? –
@BillyONeal: una buona domanda, ma ciò non invalida questo. –
@NicolBolas: non ho mai affermato di averlo fatto. –