Topic: Question about overloading
Author: maxtal@physics.su.OZ.AU (John Max Skaller)
Date: Thu, 11 Aug 1994 11:22:14 GMT Raw View
In article <31ti6g$65i@agate.berkeley.edu> dougal@homer.CS.Berkeley.EDU (Doug Hauge) writes:
>
> Should the following overloading be allowed?
>
>class A {
> static void f();
> void f() const;
>};
Dont know but a _call_ to f() is not allowed here.
Its not allowed in the case:
class A {
static void f();
void f(int);
};
either: name binding and selection of candidates for
overload resolution is done first and result must not
be a set containing both static and non-static functions.
(San Diego resolution)
--
JOHN (MAX) SKALLER, INTERNET:maxtal@suphys.physics.su.oz.au
Maxtal Pty Ltd,
81A Glebe Point Rd, GLEBE Mem: SA IT/9/22,SC22/WG21
NSW 2037, AUSTRALIA Phone: 61-2-566-2189
Author: dougal@homer.CS.Berkeley.EDU (Doug Hauge)
Date: 5 Aug 1994 14:26:24 GMT Raw View
Should the following overloading be allowed?
class A {
static void f();
void f() const;
};
ARM 9.4 states that "there cannot be a static and a nonstatic
member function with the same name and the same argument types",
but "argument types" includes the implicit `this' parameter in
the following case: (Here, I am going by the use of "argument types"
in the rules in ARM 13)
class A {
void f();
void f() const; // allowed because differ enough in type of this
};
but not in:
class A {
void f();
static void f(); // error because { A a; a.f(); } is ambiguous
};
I would think that the latter case should apply to the above
example, and it should be an error. However, g++ allows it and
disambiguates based on the object on which the method was invoked
(upon the type of `this' in method definitions).
(However, ARM 13 "Member functions that differ only in that one is a
static member and the other isn't may not have the same name (9.4)"
would seem by omission to support g++'s interpretation, but this
would also allow
class A {
void f(int);
static void f(int&);
};
which shouldn't be allowed, should it?)
Doug
--
dougal@cs.berkeley.edu