#include <vector>
struct C
{
std::vector<int> v;
decltype(v.begin()) begin() { return v.begin(); }
decltype(v.end()) end() { return v.end(); }
};
Clang ++ không có vấn đề, nhưng MSVC 2013 cung cấp cho các lỗi sau:Tại sao Visual Studio 2013 gặp sự cố với decltype thành viên nhóm này?
error C2228: left of '.begin' must have class/struct/union
Xem http://stackoverflow.com/a/11235245/103167 vì sao kiểu mã hóa này bị hỏng trong bất kỳ trình biên dịch nào và bạn nên sử dụng kiểu trả về cho 'decltype' trên các thành viên của' this'. –