4

我发现了一些奇怪的行为。它是按照 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++ 不支持默认整数

4

0 回答 0