Câu hỏi này rõ ràng cho rằng chúng tôi không muốn sử dụng mẫu cho loại này (vì bất kỳ lý do gì).Có C++ 0x cho phép decltype() trong chữ ký chức năng?
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
};
Câu hỏi đặt ra là: được 1. và 2. cho phép và có thể (hoặc thậm chí đặc biệt được xác định) trong C++ 0x?
Tuyệt! Đó là hành vi tiêu chuẩn hay chỉ có hành vi thực hiện gcc? – Klaim
Theo như tôi biết, đây là hành vi tiêu chuẩn. – TonyK
@Klaim Tiêu chuẩn nói "Loại trả về được xác định muộn là hữu ích nhất cho một loại sẽ phức tạp hơn để xác định trước khi khai báo-id" mà dường như chỉ ra rằng đặt decltype trước khi hàm hợp lệ và giá trị trả về là tùy chọn cho các trường hợp dễ dàng hơn (hoặc các lamdas khi cần) – MerickOWA