Why is Visual Studio 2013 having trouble with this class member decltype?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: #include <vector> struct C { std::vector<int> v; decltype(v.begin()) begin() { return v.begin(); } decltype(v.end()) end() { return v.end(); } }; Clang++ has no problem, but MSVC 2013 gives the following error: error C2228: left of '.begin' must have class/struct/union 回答1: This is a known bug in VS2013, fixed in VS2015. The compiler will accept the code if you use a trailing return type instead. struct C { std::vector<int> v; auto begin() -> decltype(v.begin()) { return v.begin(); } auto end() -> decltype(v.end()) { return v.end(); } }; As