C++ 成员变量声明的decltype仅在非模板类中有效?

C++ 成员变量声明的decltype仅在非模板类中有效?,c++,templates,visual-c++,decltype,msvc12,C++,Templates,Visual C++,Decltype,Msvc12,我发现了一些奇怪的行为。是按照C++标准,还是微软编译器bug?我正在使用MSVC 2013更新4(v120工具集) 这项工作: #include <deque> class Test { std::deque<int> _items; decltype(_items)::iterator _currentItem; }; int main() { Test test; return 0; } #包括 课堂测试 { std::deq

我发现了一些奇怪的行为。是按照C++标准,还是微软编译器bug?我正在使用MSVC 2013更新4(v120工具集)

这项工作:

#include <deque>

class Test
{
    std::deque<int> _items;
    decltype(_items)::iterator _currentItem;
};

int main()
{
    Test test;

    return 0;
}
#包括
课堂测试
{
std::deque_项目;
decltype(_items)::迭代器_currentItem;
};
int main()
{
试验;
返回0;
}
而这无法编译:

#include <deque>

template <typename T>
class Test
{
    std::deque<int> _items;
    decltype(_items)::iterator _currentItem;
};

int main()
{
    Test<int> test;

    return 0;
}
#包括
模板
课堂测试
{
std::deque_项目;
decltype(_items)::迭代器_currentItem;
};
int main()
{
试验;
返回0;
}
错误是:

1> cpp(7):错误C2146:语法错误:缺少“;”在标识符“\u currentItem”之前
1> 来源.cpp(8):参见参考 正在编译的类模板实例化“Test”1>Source.cpp(7): 错误C4430:缺少类型说明符-假定为int。注:C++不 支持默认整数


我怀疑问题的根源与我们的相同。