Questa domanda, ovviamente, per scontato che noi non vogliamo utilizzare i modelli di questo tipo (per qualsiasi motivo).Il C++ 0x consente decltype() nella firma della funzione?
class Product
{
public:
Product(decltype(mPrice) price_, decltype(mLabel) label_) // 1.
: mPrice(price_), mLabel(label_)
{}
decltype(mPrice) price() const {return mPrice;} // 2.
decltype(mLabel) label() const {return mLabel;} // 2.
private:
float mPrice ; // type might later be changed to more acurate floating point abstraction
std::string mLabel; // type might later be changed by a special localization-oriented string
};
La domanda è: sono 1. e 2. ammessi e possibile (o addirittura specificamente definito) in C++ 0x?
Fantastico! È un comportamento standard o solo un comportamento di implementazione di gcc? – Klaim
Per quanto ne so, questo è un comportamento standard. – TonyK
@Klaim Lo standard dice "Un tipo di ritorno specificato più tardi è più utile per un tipo che sarebbe più complicato specificare prima dell'id dichiaratore" che sembra indicare che inserire il decltype prima che la funzione sia valida e il valore di ritorno finale è opzionale per i casi in cui è più semplice (o lamdas dove necessario) – MerickOWA