- Title
- Can a base-specifier name a cv-qualified class type?
- Status
- cd1
- Section
- 11.7 [class.derived]
- Submitter
- Richard Corden
Created on 2004-10-21.00:00:00 last changed 217 months ago
Messages
Date: 2006-10-15.00:00:00
[Voted into WP at the October, 2006 meeting.]
Date: 2005-10-15.00:00:00
Proposed resolution (October, 2005): Change 11.3 [class.name] paragraph 5 as indicated: Delete 9.2.4 [dcl.typedef] paragraph 8: [Note: if the typedef-name is used where
a class-name (or enum-name) is required, the program is
ill-formed. For example, βend note]
A typedef-name (9.2.4 [dcl.typedef]) that names a
class type, or a cv-qualified version thereof, is also
a
class-name, but class-name. If
a typedef-name that names a cv-qualified class type is used
where a class-name is required, the cv-qualifiers are ignored.
A typedef-name shall not be used as the identifier
in a
class-head.
typedef struct {
S(); // error: requires a return type because S is
// an ordinary member function, not a constructor
} S;
Date: 2005-06-15.00:00:00
Additional notes (June, 2005): It's not completely clear what it means to have a cv-qualified
type as a base-specifier. The original proposed resolution
for issue 298 said that βthe
cv-qualifiers are ignored,β but that wording is not in the
resolution that was ultimately approved. If the cv-qualifiers are not ignored, does that mean that
the base-class subobject should be treated as always similarly
cv-qualified, regardless of the cv-qualification of the derived-class
lvalue used to access the base-class subobject? For instance:
typedef struct B {
void f();
void f() const;
int i;
} const CB;
struct D: CB { };
void g(D* dp) {
dp->f(); // which B::f?
dp->i = 3; // permitted?
}
Date: 2005-04-15.00:00:00
Rationale (April, 2005): The resolution of issue 298 added
new text to 11.3 [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.
Date: 2022-11-20.07:54:16
Issue 298, recently approved,
affirms that cv-qualified class types can be used as
nested-name-specifiers. Should the same be true for
base-specifiers?
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2008-10-05 00:00:00 | admin | set | status: wp -> cd1 |
| 2007-05-06 00:00:00 | admin | set | status: dr -> wp |
| 2006-11-05 00:00:00 | admin | set | messages: + msg1438 |
| 2006-11-05 00:00:00 | admin | set | status: ready -> dr |
| 2006-04-22 00:00:00 | admin | set | status: review -> ready |
| 2005-10-22 00:00:00 | admin | set | messages: + msg1244 |
| 2005-10-22 00:00:00 | admin | set | status: open -> review |
| 2005-06-27 00:00:00 | admin | set | messages: + msg1206 |
| 2005-06-27 00:00:00 | admin | set | status: dup -> open |
| 2005-05-01 00:00:00 | admin | set | messages: + msg1201 |
| 2005-05-01 00:00:00 | admin | set | status: open -> dup |
| 2004-10-21 00:00:00 | admin | create | |