C++11中关键字using的用例

Use cases of keyword using in C++11

我知道 using 在 C++11 中的行为与 typedef 相同。我有这段代码并发现了不同的用例:

template<typename T, int a>
class Base
{
public:
     std::vector<T> noise_(a);
     using VectorType = std::vector<T>;
     virtual VectorType getVector() const
     {
        return noise_;
     }
protected:
     VectorType noise_;
};

template<typename T, int a> 
class Derived : public Base<T,a>
{
public:
    using Base<T,a>::noise_;
    using VectorType = typename Base<T,a>::VectorType; 
    using Base<T,a>::getVector;
};

这里,using有3种不同的用法。以下行的目的是什么(noise_ 是基 class 的受保护成员):

using Base<T,a>::noise_;

同样适用于:

using Base<T,a>::getVector;

简单地说,当基 class 依赖于模板参数时,不检查其作用域以解析名称。因此,您不能仅使用 noise_Derived 中引用 noise_。您应该写 this->noise_,或者用 using.

介绍名称