From Jason Turner

[class.compare.secondary]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp8l0lnvqb/{from.md → to.md} +243 -0
tmp/tmp8l0lnvqb/{from.md → to.md} RENAMED
@@ -28,5 +28,248 @@ struct C {
28
  };
29
  ```
30
 
31
  — *end example*]
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  };
29
  ```
30
 
31
  — *end example*]
32
 
33
+ <!-- Link reference definitions -->
34
+ [basic.align]: basic.md#basic.align
35
+ [basic.compound]: basic.md#basic.compound
36
+ [basic.def]: basic.md#basic.def
37
+ [basic.def.odr]: basic.md#basic.def.odr
38
+ [basic.life]: basic.md#basic.life
39
+ [basic.link]: basic.md#basic.link
40
+ [basic.lookup]: basic.md#basic.lookup
41
+ [basic.lookup.elab]: basic.md#basic.lookup.elab
42
+ [basic.lval]: expr.md#basic.lval
43
+ [basic.scope.class]: basic.md#basic.scope.class
44
+ [basic.scope.pdecl]: basic.md#basic.scope.pdecl
45
+ [basic.scope.scope]: basic.md#basic.scope.scope
46
+ [basic.start.dynamic]: basic.md#basic.start.dynamic
47
+ [basic.start.static]: basic.md#basic.start.static
48
+ [basic.start.term]: basic.md#basic.start.term
49
+ [basic.stc.auto]: basic.md#basic.stc.auto
50
+ [basic.stc.static]: basic.md#basic.stc.static
51
+ [basic.stc.thread]: basic.md#basic.stc.thread
52
+ [basic.types]: basic.md#basic.types
53
+ [class]: #class
54
+ [class.abstract]: #class.abstract
55
+ [class.access]: #class.access
56
+ [class.access.base]: #class.access.base
57
+ [class.access.general]: #class.access.general
58
+ [class.access.nest]: #class.access.nest
59
+ [class.access.spec]: #class.access.spec
60
+ [class.access.virt]: #class.access.virt
61
+ [class.base.init]: #class.base.init
62
+ [class.bit]: #class.bit
63
+ [class.cdtor]: #class.cdtor
64
+ [class.compare]: #class.compare
65
+ [class.compare.default]: #class.compare.default
66
+ [class.compare.secondary]: #class.compare.secondary
67
+ [class.conv]: #class.conv
68
+ [class.conv.ctor]: #class.conv.ctor
69
+ [class.conv.fct]: #class.conv.fct
70
+ [class.conv.general]: #class.conv.general
71
+ [class.copy.assign]: #class.copy.assign
72
+ [class.copy.ctor]: #class.copy.ctor
73
+ [class.copy.elision]: #class.copy.elision
74
+ [class.ctor]: #class.ctor
75
+ [class.ctor.general]: #class.ctor.general
76
+ [class.default.ctor]: #class.default.ctor
77
+ [class.derived]: #class.derived
78
+ [class.derived.general]: #class.derived.general
79
+ [class.dtor]: #class.dtor
80
+ [class.eq]: #class.eq
81
+ [class.expl.init]: #class.expl.init
82
+ [class.free]: #class.free
83
+ [class.friend]: #class.friend
84
+ [class.inhctor.init]: #class.inhctor.init
85
+ [class.init]: #class.init
86
+ [class.init.general]: #class.init.general
87
+ [class.local]: #class.local
88
+ [class.mem]: #class.mem
89
+ [class.mem.general]: #class.mem.general
90
+ [class.member.lookup]: basic.md#class.member.lookup
91
+ [class.mfct]: #class.mfct
92
+ [class.mfct.non.static]: #class.mfct.non.static
93
+ [class.mi]: #class.mi
94
+ [class.name]: #class.name
95
+ [class.nest]: #class.nest
96
+ [class.paths]: #class.paths
97
+ [class.pre]: #class.pre
98
+ [class.prop]: #class.prop
99
+ [class.protected]: #class.protected
100
+ [class.qual]: basic.md#class.qual
101
+ [class.spaceship]: #class.spaceship
102
+ [class.static]: #class.static
103
+ [class.static.data]: #class.static.data
104
+ [class.static.general]: #class.static.general
105
+ [class.static.mfct]: #class.static.mfct
106
+ [class.temporary]: basic.md#class.temporary
107
+ [class.union]: #class.union
108
+ [class.union.anon]: #class.union.anon
109
+ [class.union.general]: #class.union.general
110
+ [class.virtual]: #class.virtual
111
+ [cmp.categories]: support.md#cmp.categories
112
+ [cmp.categories.pre]: support.md#cmp.categories.pre
113
+ [cmp.partialord]: support.md#cmp.partialord
114
+ [cmp.strongord]: support.md#cmp.strongord
115
+ [cmp.weakord]: support.md#cmp.weakord
116
+ [conv]: expr.md#conv
117
+ [conv.mem]: expr.md#conv.mem
118
+ [conv.ptr]: expr.md#conv.ptr
119
+ [conv.rval]: expr.md#conv.rval
120
+ [dcl.array]: dcl.md#dcl.array
121
+ [dcl.attr.nouniqueaddr]: dcl.md#dcl.attr.nouniqueaddr
122
+ [dcl.constexpr]: dcl.md#dcl.constexpr
123
+ [dcl.decl]: dcl.md#dcl.decl
124
+ [dcl.enum]: dcl.md#dcl.enum
125
+ [dcl.fct]: dcl.md#dcl.fct
126
+ [dcl.fct.def]: dcl.md#dcl.fct.def
127
+ [dcl.fct.def.coroutine]: dcl.md#dcl.fct.def.coroutine
128
+ [dcl.fct.def.default]: dcl.md#dcl.fct.def.default
129
+ [dcl.fct.def.delete]: dcl.md#dcl.fct.def.delete
130
+ [dcl.fct.def.general]: dcl.md#dcl.fct.def.general
131
+ [dcl.fct.default]: dcl.md#dcl.fct.default
132
+ [dcl.fct.spec]: dcl.md#dcl.fct.spec
133
+ [dcl.init]: dcl.md#dcl.init
134
+ [dcl.init.aggr]: dcl.md#dcl.init.aggr
135
+ [dcl.init.general]: dcl.md#dcl.init.general
136
+ [dcl.init.list]: dcl.md#dcl.init.list
137
+ [dcl.init.ref]: dcl.md#dcl.init.ref
138
+ [dcl.inline]: dcl.md#dcl.inline
139
+ [dcl.meaning]: dcl.md#dcl.meaning
140
+ [dcl.name]: dcl.md#dcl.name
141
+ [dcl.spec.auto]: dcl.md#dcl.spec.auto
142
+ [dcl.stc]: dcl.md#dcl.stc
143
+ [dcl.type.cv]: dcl.md#dcl.type.cv
144
+ [dcl.type.elab]: dcl.md#dcl.type.elab
145
+ [dcl.type.simple]: dcl.md#dcl.type.simple
146
+ [dcl.typedef]: dcl.md#dcl.typedef
147
+ [depr.impldec]: future.md#depr.impldec
148
+ [depr.static.constexpr]: future.md#depr.static.constexpr
149
+ [diff.class]: compatibility.md#diff.class
150
+ [except.ctor]: except.md#except.ctor
151
+ [except.handle]: except.md#except.handle
152
+ [except.pre]: except.md#except.pre
153
+ [except.spec]: except.md#except.spec
154
+ [except.throw]: except.md#except.throw
155
+ [expr.ass]: expr.md#expr.ass
156
+ [expr.call]: expr.md#expr.call
157
+ [expr.cast]: expr.md#expr.cast
158
+ [expr.const]: expr.md#expr.const
159
+ [expr.const.cast]: expr.md#expr.const.cast
160
+ [expr.delete]: expr.md#expr.delete
161
+ [expr.dynamic.cast]: expr.md#expr.dynamic.cast
162
+ [expr.eq]: expr.md#expr.eq
163
+ [expr.new]: expr.md#expr.new
164
+ [expr.prim.id]: expr.md#expr.prim.id
165
+ [expr.prim.id.dtor]: expr.md#expr.prim.id.dtor
166
+ [expr.prim.id.qual]: expr.md#expr.prim.id.qual
167
+ [expr.prim.this]: expr.md#expr.prim.this
168
+ [expr.ref]: expr.md#expr.ref
169
+ [expr.reinterpret.cast]: expr.md#expr.reinterpret.cast
170
+ [expr.rel]: expr.md#expr.rel
171
+ [expr.static.cast]: expr.md#expr.static.cast
172
+ [expr.sub]: expr.md#expr.sub
173
+ [expr.throw]: expr.md#expr.throw
174
+ [expr.type.conv]: expr.md#expr.type.conv
175
+ [expr.typeid]: expr.md#expr.typeid
176
+ [expr.unary.op]: expr.md#expr.unary.op
177
+ [intro.execution]: basic.md#intro.execution
178
+ [intro.object]: basic.md#intro.object
179
+ [namespace.udecl]: dcl.md#namespace.udecl
180
+ [over]: over.md#over
181
+ [over.ass]: over.md#over.ass
182
+ [over.best.ics]: over.md#over.best.ics
183
+ [over.binary]: over.md#over.binary
184
+ [over.ics.ref]: over.md#over.ics.ref
185
+ [over.match]: over.md#over.match
186
+ [over.match.best]: over.md#over.match.best
187
+ [over.match.call]: over.md#over.match.call
188
+ [over.match.copy]: over.md#over.match.copy
189
+ [over.match.funcs]: over.md#over.match.funcs
190
+ [over.oper]: over.md#over.oper
191
+ [over.over]: over.md#over.over
192
+ [special]: #special
193
+ [stmt.dcl]: stmt.md#stmt.dcl
194
+ [stmt.return]: stmt.md#stmt.return
195
+ [string.classes]: strings.md#string.classes
196
+ [temp.arg]: temp.md#temp.arg
197
+ [temp.constr]: temp.md#temp.constr
198
+ [temp.constr.order]: temp.md#temp.constr.order
199
+ [temp.deduct.guide]: temp.md#temp.deduct.guide
200
+ [temp.dep.type]: temp.md#temp.dep.type
201
+ [temp.expl.spec]: temp.md#temp.expl.spec
202
+ [temp.explicit]: temp.md#temp.explicit
203
+ [temp.friend]: temp.md#temp.friend
204
+ [temp.inst]: temp.md#temp.inst
205
+ [temp.mem]: temp.md#temp.mem
206
+ [temp.param]: temp.md#temp.param
207
+ [temp.pre]: temp.md#temp.pre
208
+ [temp.spec.partial]: temp.md#temp.spec.partial
209
+ [temp.variadic]: temp.md#temp.variadic
210
+ [term.incomplete.type]: basic.md#term.incomplete.type
211
+ [term.layout.compatible.type]: basic.md#term.layout.compatible.type
212
+ [term.object.representation]: basic.md#term.object.representation
213
+ [term.odr.use]: basic.md#term.odr.use
214
+ [term.padding.bits]: basic.md#term.padding.bits
215
+
216
+ [^1]: This ensures that two subobjects that have the same class type and
217
+ that belong to the same most derived object are not allocated at the
218
+ same address [[expr.eq]].
219
+
220
+ [^2]: See, for example, `<cstring>`.
221
+
222
+ [^3]: This implies that the reference parameter of the
223
+ implicitly-declared copy constructor cannot bind to a `volatile`
224
+ lvalue; see  [[diff.class]].
225
+
226
+ [^4]: Because a template assignment operator or an assignment operator
227
+ taking an rvalue reference parameter is never a copy assignment
228
+ operator, the presence of such an assignment operator does not
229
+ suppress the implicit declaration of a copy assignment operator.
230
+ Such assignment operators participate in overload resolution with
231
+ other assignment operators, including copy assignment operators,
232
+ and, if selected, will be used to assign an object.
233
+
234
+ [^5]: This implies that the reference parameter of the
235
+ implicitly-declared copy assignment operator cannot bind to a
236
+ `volatile` lvalue; see  [[diff.class]].
237
+
238
+ [^6]: These conversions are considered as standard conversions for the
239
+ purposes of overload resolution [[over.best.ics]], [[over.ics.ref]]
240
+ and therefore initialization [[dcl.init]] and explicit casts
241
+ [[expr.static.cast]]. A conversion to `void` does not invoke any
242
+ conversion function [[expr.static.cast]]. Even though never directly
243
+ called to perform a conversion, such conversion functions can be
244
+ declared and can potentially be reached through a call to a virtual
245
+ conversion function in a base class.
246
+
247
+ [^7]: The use of the `virtual` specifier in the declaration of an
248
+ overriding function is valid but redundant (has empty semantics).
249
+
250
+ [^8]: If all virtual functions are immediate functions, the class is
251
+ still polymorphic even if its internal representation does not
252
+ otherwise require any additions for that polymorphic behavior.
253
+
254
+ [^9]: A function with the same name but a different parameter list
255
+ [[over]] as a virtual function is not necessarily virtual and does
256
+ not override. Access control [[class.access]] is not considered in
257
+ determining overriding.
258
+
259
+ [^10]: Multi-level pointers to classes or references to multi-level
260
+ pointers to classes are not allowed.
261
+
262
+ [^11]: Access permissions are thus transitive and cumulative to nested
263
+ and local classes.
264
+
265
+ [^12]: As specified previously in [[class.access]], private members of a
266
+ base class remain inaccessible even to derived classes unless friend
267
+ declarations within the base class definition are used to grant
268
+ access explicitly.
269
+
270
+ [^13]: This additional check does not apply to other members, e.g.,
271
+ static data members or enumerator member constants.
272
+
273
+ [^14]: Because only one object is destroyed instead of two, and one
274
+ copy/move constructor is not executed, there is still one object
275
+ destroyed for each one constructed.