在以下完整程序中:
#include <vector>
class Derived : private std::vector<int> {
public:
void f();
};
void Derived::f() {
Derived d;
d.std::vector<int>::push_back(0);
}
int main() {
Derived d;
d.f();
}
线
d.std::vector<int>::push_back(0);
可以替换为
d.vector<int>::push_back(0);
并且编译将在gcc 7和clang 6中完成警告提示。
我不明白为什么范围解析的std::
部分是可选的,因为没有using namespace std
声明。