C ++,没有明确的typename关键字用法

时间:2016-11-10 01:01:10

标签: c++ templates

我有以下类声明:

    template <typename T, size_t N>
    class CircularBuffer {
        public:
        using iterator = typename std::array<T, N>::iterator;
        ...
    private:
        std::array<T, N> m_elements;
        ...
    };

没有&#34; typename&#34;关键字&#34;使用&#34; iterator = typename std :: array :: iterator;&#34;编译器发出错误:

   error: need ‘typename’ before ‘std::array<_Tp, _Nm>::iterator’ because ‘std::array<_Tp, _Nm>’ is a dependent scope.

但声明        &#34;使用iterator = std :: array :: iterator;&#34; 编译。

据我了解&#34;使用&#34;仅使用关键字(除了&#34;使用命名空间...&#34;)来创建类型别名,那么为什么需要&#34; typename&#34;在上面的例子中呢? 谢谢!

0 个答案:

没有答案