vit*_*aut 4 c++ gcc compiler-errors clang visual-c++
考虑以下(人为)示例:
class A {
public:
template <typename T>
class C {};
};
class B : private A {
public:
using A::C;
};
int main() {
B::C<int> c;
}
Run Code Online (Sandbox Code Playgroud)
它与GCC和Clang成功编译,但Visual C++ 2010出现以下错误:
test.cpp(13):错误C2247:'A :: C'无法访问,因为'B'使用'private'继承'A'
这是Visual C++中的错误还是这段代码确实无效?
如果C不是模板,则代码将编译在所有编译器上.
[namespace.udecl]/P18:
using-declaration创建的别名具有成员声明的通常可访问性.
这里不多说.该名称B::C可公开访问,代码格式正确.只是另一个MSVC错误.