typedefed类型是否始终对派生类可见?

时间:2014-07-03 04:35:05

标签: c++ inheritance types namespaces typedef

如果我typedef公共基类中的某些类型,C ++标准是否保证typedef ed类型始终对派生类可见?

例如:

struct A
{
    typedef int T;
};

struct B : A
{
    void f(T) {}; // Does the C++ standard guarantee it can be compiled?
};

int main()
{
    B().f(8); 
}

1 个答案:

答案 0 :(得分:1)

类中定义的

typedef具有与类的其他名称相同的访问规则。 privateprotectedpublic名称的常用访问规则也适用于typedef

从草案标准n3337:

7.1.3 typedef说明符

  1. ...在其声明的范围内, typedef-name 在语法上等同于关键字,并按照第8章中描述的方式命名与标识符关联的类型。
  2. 9.2班级成员

    1. 类定义中的 member-specification 声明了该类的完整成员集;其他任何成员都无法添加。类的成员是数据成员,成员函数(9.3),嵌套类型和枚举器。数据成员和成员函数是静态的或非静态的;见9.4。嵌套类型是类中定义的类(9.1,9.7)和枚举(7.2),以及使用typedef声明(7.1.3)声明为成员的任意类型。