Created on 2000-01-11.00:00:00 last changed 262 months ago
Proposed resolution (10/00):
Add to 11.4 [class.mem] paragraph 13
- every member function of class T [Note: this restriction does not apply to constructors, which do not have names (11.4.5 [class.ctor]). ];
immediately following the line
- every data member of class T;
Change 11.4.5 [class.ctor] paragraph 1 from
A special declarator syntax using an optional function-specifier (9.2.3 [dcl.fct.spec])...
to
A special declarator syntax using an optional sequence of function-specifiers (9.2.3 [dcl.fct.spec])...
According to 11.4.5 [class.ctor] paragraph 1, the syntax used in declaring a constructor allows at most one function-specifier. It is thus not permitted to declare a constructor both inline and explicit. This seems overly restrictive.
On a related note, there doesn't seem to be any explicit prohibition against member functions with the same name as the class. (Such a prohibition might reasonably be expected to occur in 11.4 [class.mem] paragraph 13, but member functions are not listed there.)
One possible interpretation would be that such member functions would violate the restrictions in 6.4.7 [basic.scope.class] paragraph 1, because the class name would refer to the class at some points in the class scope and to the member function at others. However, this seems a bit tenuous. Is an explicit prohibition needed?
(See also issue 147.)
History | |||
---|---|---|---|
Date | User | Action | Args |
2003-04-25 00:00:00 | admin | set | status: dr -> tc1 |
2000-11-18 00:00:00 | admin | set | status: ready -> dr |
2000-05-21 00:00:00 | admin | set | messages: + msg314 |
2000-05-21 00:00:00 | admin | set | status: open -> ready |
2000-01-11 00:00:00 | admin | create |