Я обнаружил некоторое странное поведение. Это соответствует стандарту С++ или это ошибка компилятора 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++ не поддерживает default-int.