Esta pregunta obviamente asume que no queremos usar plantillas para este tipo (por las razones que sean).¿C++ 0x permite decltype() en la firma de la función?
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 pregunta es: se 1. y 2. permitido y posible (o incluso específicamente definido) en C++ 0x?
¡Genial! ¿Es un comportamiento estándar o solo un comportamiento de implementación de gcc? – Klaim
Hasta donde yo sé, este es el comportamiento estándar. – TonyK
@Klaim El estándar dice "Un tipo de devolución tarde especificado es más útil para un tipo que sería más complicado de especificar antes del declarator-id" que parece indicar que poner el decltype antes de que la función sea válida y el valor de retorno final es opcional para casos donde es más fácil (o lamdas donde sea necesario) – MerickOWA