Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-05-28 11:28:24


> Umm... yeah! And what was the error on Intel with the const empty type?
> ;-)

It was something useful like "Illegal base class".

> This is a pretty interesting point. I whipped this test up to explore:
>
> struct Base {};
>
> typedef const Base ConstBase;
>
> struct A
> : ConstBase
> {
> A() {}
> };
>
> It compiles on CW. But it doesn't on Comeau C++ Online (thanks Greg).
> Normally when CW and EDG disagree, the decision usually goes to EDG. So I
> started searching the standard for where it says that cv-qualified classes
> can't be used as base specifiers so that I could send our compiler team
> the bug report.
>
> Couldn't find it. So I started digging into the core issues list and
> found:
>
> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#484
>
> Subject: Can a base-specifier name a cv-qualified class type?
>
> Ah, perfect.
>
>> The resolution of issue 298 added new text to 9.1 class.name paragraph
>> 5 making it clear that a typedef that names a cv-qualified class type is
>> a class-name. Because the definition of base-specifier simply refers to
>> class-name, it is already the case that cv-qualified class types are
>> permitted as base-specifiers.
>
> No kidding. And check out the date on that:
>
>> Rationale (April, 2005):
>
> Fresh from the Lillehammer presses! :-)

Right, but it's been declared a duplicate of issue 298, which was resolved
in April 2003, so it's that remarkable thing, an EDG deviation from the
standard.

Well researched!

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk