【发布时间】:2014-07-03 21:30:57
【问题描述】:
#include <vector>
struct C
{
std::vector<int> v;
decltype(v.begin()) begin() { return v.begin(); }
decltype(v.end()) end() { return v.end(); }
};
Clang++没有问题,但是MSVC 2013报如下错误:
error C2228: left of '.begin' must have class/struct/union
【问题讨论】:
-
请参阅stackoverflow.com/a/11235245/103167,了解为什么这种编码风格在任何编译器中都被破坏了,您应该对
this的成员使用decltype的尾随返回类型。
标签: c++ visual-c++ c++11 visual-studio-2013 decltype