据我了解,decltype 用于查询对象/变量的类型等。
来自维基百科上的示例,例如:
int i;
decltype(i) x3; // type is int
我以为我可以做这样的事情:
class A
{
public:
int a, b;
};
template<typename T>
struct IsClass
{
enum { Yes = std::is_class<T>::value };
enum { No = !Yes };
};
std::vector<A> v;
auto it = v.begin();
IsClass<decltype(it)::value_type>::Yes
因为毕竟这条线是合法的:
IsClass<std::vector<A>::iterator::value_type>::Yes
唉,它不会编译,引用以下内容:error C2039: 'value_type' : is not a member of '
全局命名空间''`
关于为什么在存在 decltype 的情况下进行范围解析以这种方式表现的任何想法?
PS:如果有什么不同,我使用的是 MSVC2012(没有Nov CTP)