@@ -4052,8 +4052,9 @@ <h4><a href="#mangling-general"> 5.1.1 General </a></h4>
40524052or < code > Type?</ code > for an unknown data type.
40534053
40544054< 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.
40574058
40584059< p >
40594060< a name ="mangling-structure ">
@@ -4064,6 +4065,7 @@ <h4><a href="#mangling-structure"> 5.1.2 General Structure </a></h4>
40644065Mangled names have the general structure:
40654066< pre > < font color =blue > < code >
40664067 << 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>
40674069 << 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 > >
40684070 ::= << i > data</ i > < a href ="#mangle.name "> name</ a > >
40694071 ::= << a href ="#mangle.special-name "> special-name</ a > >
@@ -4081,6 +4083,13 @@ <h4><a href="#mangling-structure"> 5.1.2 General Structure </a></h4>
40814083parameters).
40824084The type is omitted for variables and static data members.
40834085
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+
40844093< a name ="mangle.anonymous ">
40854094< h5 > < a href ="#mangling.anonymous "> Anonymous entities</ a > </ h5 >
40864095
@@ -5167,7 +5176,7 @@ <h4><a href="#expressions">5.1.6 Expressions</a></h4>
51675176 ::= L << i > nullptr</ i > < a href ="#mangle.type "> type</ a > > E # nullptr literal (i.e., "LDnE")
51685177 ::= L << i > pointer</ i > < a href ="#mangle.type "> type</ a > > 0 E # null pointer template argument
51695178 ::= 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
51715180
51725181 << a name ="mangle.braced-expression "> braced-expression</ a > > ::= << a href ="#mangle.expression "> expression</ a > >
51735182 ::= 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
52535262< p >
52545263When encoding template signatures, a name appearing in the source code
52555264cannot 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
52575266< code > << a href ="#mangle.expr-primary "> expr-primary</ a > ></ code > ) does not apply, and instead the
52585267< code > << a href ="#mangle.unresolved-name "> unresolved-name</ a > ></ code > encoding is used. For example:
52595268< code > < pre >
0 commit comments