我发现了一些奇怪的行为。它是按照 C++ 标准,还是 Microsoft 编译器错误?我正在使用 MSVC 2013 Update 4(v120 工具集)。
这有效:
#include <deque>
class Test
{
std::deque<int> _items;
decltype(_items)::iterator _currentItem;
};
int main()
{
Test test;
return 0;
}
这无法编译:
#include <deque>
template <typename T>
class Test
{
std::deque<int> _items;
decltype(_items)::iterator _currentItem;
};
int main()
{
Test<int> test;
return 0;
}
错误是:
1>Source.cpp(7):错误 C2146:语法错误:缺少 ';' 在标识符 '_currentItem'
1> Source.cpp(8) 之前:参见对正在编译的类模板实例化 'Test' 的引用 1>Source.cpp(7):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数