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++ は default-int をサポートしていません

4

0 に答える 0