ato*_*ice 3 c++ standards typedef g++ standards-compliance
GNU C++(g ++ -pedantic -Wall)接受这个:
typedef int MyInt;
class Test
{
public:
MyInt foo();
void bar(MyInt baz);
};
int Test::foo()
{
return 10;
}
void Test::bar(int baz)
{
}
int main(void)
{
Test t;
t.bar(t.foo());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它是合法的C++吗?其他编译器是否可能接受它?
Ara*_*raK 10
是的,它是合法的:
7.1.3 typedef说明符
使用typedef说明符声明的名称将成为typedef-name.在其声明的范围内,typedef-name在语法上 等同于关键字,并以第8节中描述的方式命名与标识符关联的类型.因此,typedef-name是另一种类型的同义词.typedef-name不会像 类 声明(9.1)或枚举声明 那样引入新类型.