奇妙な行動を発見しました。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++ は default-int をサポートしていません