如[dcl.typedef] / 9中所述,仅用于“链接目的”的链接声明的目的是什么?

时间:2019-01-04 12:02:51

标签: c++ language-lawyer

[dcl.typedef]/9

如果typedef声明定义了一个未命名的类(或枚举类型),则该声明声明的第一个typedef-name是该类类型(或枚举类型),用于表示链接的类类型(或枚举类型)仅([basic.link])。 [注意:涉及lambda-expression的typedef声明本身不会定义关联的闭包类型,因此,出于链接目的,没有为闭包类型指定名称。 —尾注] [示例:

typedef struct { } *ps, S;      // S is the class name for linkage purposes
typedef decltype([]{}) C;       // the closure type has no name for linkage purposes

-示例]

1 个答案:

答案 0 :(得分:0)

我认为您没有正确解析。这就是说,在这种声明中,将以这种方式确定“用于链接目的的名称”。如果某个类型的名称出现在函数参数中,则需要为该类型命名(请参见What is name mangling, and how does it work?