Zgodnie z ogólną zasadą, decltype
zachowuje constness:Dlaczego decltype usuwa const z typów zwracanych dla typów wbudowanych?
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
Ale dla typów const
zwrotnych, które zwracają podstawowe typy, decltype
zdaje się rzucać const
dala:
const int makeCI(); // factory
decltype(makeCI()) z; // z is NOT const
z = 5; // okay
Dlaczego decltype
odrzuconych constness w tym przypadku ? Mam na myśli pytanie na dwa sposoby:
- Jaka część standardu określa to zachowanie?
- Jaka jest motywacja do określania zachowania w ten sposób?
Dzięki.
Dlaczego, na Boga, chciałbyś return by const value? –
@BillyONeal: Dobre pytanie, ale to nie unieważnia tego. –
@NicolBolas: Nigdy nie twierdziłem, że tak. –