Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Daniel Krügler<daniel.kruegler@googlemail.com> |
|---|---|
| Newsgroups | comp.std.c++ |
| Subject | Re: Typo in the Working Draft of the C++ Standard # 3337 |
| Date | 2012-04-19 11:08 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <jmmvqd$eck$1@dont-email.me> (permalink) |
| References | <6f6d535e-66de-42d1-adb6-639be3a67565@m18g2000vbl.googlegroups.com> <2012041811243463815-pete@versatilecodingcom> |
Am 18.04.2012 17:54, schrieb Pete Becker:
> On 2012-04-18 06:11:23 +0000, Vlad from Moscow said:
>
>> I found a typo in the Working Draft of the C++ Standard #3337 in
>> paragraph #2 of the section 11.3 Friends. There is the following
>> example
>>
>> [ Example:
>> class A {
>> class B { };
>> friend class X;
>> };
>> struct X : A::B { // OK: A::B accessible to friend
>> A::B mx; // OK: A::B accessible to member of friend
>> class Y {
>> A::B my; // OK: A::B accessible to nested member of friend
>> };
>> };
>> —end example ]
>>
>> It is obvious that instaed of struct X : A::B shall be class X : A::B
>> because the friend declaration of X uses specifier class.
>> Maybe this typo is present in the C++ Standard. It should be checked.
>
> It's the same in the standard. Probably should be changed, for clarity.
Actually I think it should stay, because it simply confirms that struct
and class are equivalent for declarations. This is not the first time
that someone believed that both class-keys would be different in
non-defining declarations. Actually, there also exists at least one
compiler, which can produce defective code, when declaring
class X;
in one place and
struct X;
in another. This is clearly a compiler defect, but this problem often
has the effect that kind of misunderstandings stay alive.
> But my recollection is (I haven't looked it up) that struct, class, and
> even union can be used interchangeably in a forward declaration; it's
> only at the point of definition that the keyword matters.
struct and class are equivalent class-keys, but both differ from union,
see 7.1.6.3 p3:
"Thus, in any elaborated-type-specifier, the enum keyword shall be used
to refer to an enumeration (7.2), the union class-key shall be used to
refer to a union (Clause 9), and either the class or struct class-key
shall be used to refer to a class (Clause 9) declared using the class or
struct class-key."
Greetings from Bremen,
Daniel
--
[ comp.std.c++ is moderated. To submit articles, try posting with your ]
[ newsreader. If that fails, use mailto:std-cpp-submit@vandevoorde.com ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]
Back to comp.std.c++ | Previous | Next — Previous in thread | Next in thread | Find similar
Typo in the Working Draft of the C++ Standard # 3337 Vlad from Moscow <vlad.moscow@mail.ru> - 2012-04-17 23:11 -0700
Re: Typo in the Working Draft of the C++ Standard # 3337 Pete Becker<pete@versatilecoding.com> - 2012-04-18 08:54 -0700
Re: Typo in the Working Draft of the C++ Standard # 3337 Daniel Krügler<daniel.kruegler@googlemail.com> - 2012-04-19 11:08 -0700
Re: Typo in the Working Draft of the C++ Standard # 3337 Vlad from Moscow<vlad.moscow@mail.ru> - 2012-04-19 11:08 -0700
csiph-web