Skip to content

Commit 916422f

Browse files
[class.mi] Define ambiguous/unambiguous base class
Currently, terms ambiguous base class and unambiguous base class are used without clear definition. The intent seems already clear to me, but perhaps it would be better to properly define them. Co-authored-by: Casey Carter <[email protected]>
1 parent 805aac8 commit 916422f

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

source/classes.tex

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3654,6 +3654,27 @@
36543654
\end{importgraphic}
36553655
\end{note}
36563656

3657+
\pnum
3658+
\indextext{base class!ambiguous}%
3659+
\indextext{base class!unambiguous}%
3660+
If an object of class \tcode{D} has a single base class subobject of type \tcode{B},
3661+
\tcode{B} is an \defnadj{unambiguous}{base class} of \tcode{D}.
3662+
If an object of class \tcode{D} has more than one base class subobject of type \tcode{B},
3663+
\tcode{B} is an \defnadj{ambiguous}{base class} of \tcode{D}.
3664+
\begin{example}
3665+
\begin{codeblock}
3666+
class B { @\commentellip@ };
3667+
class MX : public B { @\commentellip@ };
3668+
class MY : public B { @\commentellip@ };
3669+
class D1 : public MX, public MY { @\commentellip@ }; // \tcode{B} is an ambiguous base class of \tcode{D1}
3670+
class D2 : public MX, public B { @\commentellip@ }; // \tcode{B} is an ambiguous base class of \tcode{D2}
3671+
3672+
class VMX : virtual public B { @\commentellip@ };
3673+
class VMY : virtual public B { @\commentellip@ };
3674+
class D3 : public VMX, public VMY { @\commentellip@ }; // \tcode{B} is an unambiguous base class of \tcode{D3}
3675+
\end{codeblock}
3676+
\end{example}
3677+
36573678
\rSec2[class.virtual]{Virtual functions}%
36583679
\indextext{function!virtual|(}%
36593680
\indextext{type!polymorphic}%

0 commit comments

Comments
 (0)