@@ -4052,8 +4052,9 @@ <h4><a href="#mangling-general"> 5.1.1 General </a></h4>
4052
4052
or < code > Type?</ code > for an unknown data type.
4053
4053
4054
4054
< p >
4055
- Grammar productions beginning with '$' are reserved for private implementation
4056
- use. Names produced using such extensions are inherently non-portable.
4055
+ Mangled names containing '< tt > $</ tt > ' or '< tt > .</ tt > ' are reserved for
4056
+ private implementation use. Names produced using such extensions are
4057
+ inherently non-portable and should be given internal linkage where possible.
4057
4058
4058
4059
< p >
4059
4060
< a name ="mangling-structure ">
@@ -4064,6 +4065,7 @@ <h4><a href="#mangling-structure"> 5.1.2 General Structure </a></h4>
4064
4065
Mangled names have the general structure:
4065
4066
< pre > < font color =blue > < code >
4066
4067
<< a name ="mangle.mangled-name "> mangled-name</ a > > ::= _Z << a href ="#mangle.encoding "> encoding</ a > >
4068
+ ::= _Z << a href ="#mangle.encoding "> encoding</ a > > . <vendor-specific suffix>
4067
4069
<< a name ="mangle.encoding "> encoding</ a > > ::= << i > function</ i > < a href ="#mangle.name "> name</ a > > << a href ="#mangle.bare-function-type "> bare-function-type</ a > >
4068
4070
::= << i > data</ i > < a href ="#mangle.name "> name</ a > >
4069
4071
::= << a href ="#mangle.special-name "> special-name</ a > >
@@ -4081,6 +4083,13 @@ <h4><a href="#mangling-structure"> 5.1.2 General Structure </a></h4>
4081
4083
parameters).
4082
4084
The type is omitted for variables and static data members.
4083
4085
4086
+ < p >
4087
+ A < code > << a href ="#mangle.mangled-name "> mangled-name</ a > ></ code >
4088
+ containing a period represents a vendor-specific version or portion
4089
+ of the entity named by the < code > << a href ="#mangle.encoding "> encoding</ a > ></ code >
4090
+ prior to the first period. There is no restriction on the characters
4091
+ that may be used in the suffix following the period.
4092
+
4084
4093
< a name ="mangle.anonymous ">
4085
4094
< h5 > < a href ="#mangling.anonymous "> Anonymous entities</ a > </ h5 >
4086
4095
@@ -5167,7 +5176,7 @@ <h4><a href="#expressions">5.1.6 Expressions</a></h4>
5167
5176
::= L << i > nullptr</ i > < a href ="#mangle.type "> type</ a > > E # nullptr literal (i.e., "LDnE")
5168
5177
::= L << i > pointer</ i > < a href ="#mangle.type "> type</ a > > 0 E # null pointer template argument
5169
5178
::= L << a href ="#mangle.type "> type</ a > > << i > real-part</ i > < a href ="#mangle.float "> float</ a > > _ << i > imag-part</ i > < a href ="#mangle.float "> float</ a > > E # complex floating point literal (C 2000)
5170
- ::= L << a href ="#mangle.mangled-name " > mangled-name </ a > > E # external name
5179
+ ::= L _Z << a href ="#mangle.encoding " > encoding </ a > > E # external name
5171
5180
5172
5181
<< a name ="mangle.braced-expression "> braced-expression</ a > > ::= << a href ="#mangle.expression "> expression</ a > >
5173
5182
::= di << i > field</ i > < a href ="#mangle.source-name "> source-name</ a > > << a href ="#mangle.braced-expression "> braced-expression</ a > > # .name = expr
@@ -5253,7 +5262,7 @@ <h5><a href="#mangling.declaration-reference">5.1.6.2 References to declared ent
5253
5262
< p >
5254
5263
When encoding template signatures, a name appearing in the source code
5255
5264
cannot always be resolved to a specific entity: In such cases the
5256
- < code > << a href ="#mangle.mangled-name " > mangled-name </ a > ></ code > production (via
5265
+ < code > << a href ="#mangle.encoding " > encoding </ a > ></ code > production (via
5257
5266
< code > << a href ="#mangle.expr-primary "> expr-primary</ a > ></ code > ) does not apply, and instead the
5258
5267
< code > << a href ="#mangle.unresolved-name "> unresolved-name</ a > ></ code > encoding is used. For example:
5259
5268
< code > < pre >
0 commit comments