On 2009-12-17 07:09:57 -0500, KennyTM~ <kenn...@gmail.com> said:

On Dec 17, 09 19:44, Michel Fortin wrote:
On 2009-12-17 01:57:50 -0500, Pelle Månsson <pelle.mans...@gmail.com> said:

On 12/17/2009 01:05 AM, Michel Fortin wrote:
Object? func(Object? o) {
writeln(o.toString());
return o;
}

MyObject o = func(new MyObject);

Here, "Object?" means Object or a derived type.

You know, just Object means Object or a derived type. That's what
inheritance is.

The idea is to be able to say in the function signature that the same
type is returned, avoiding a cast that would be unnecessary otherwise.
It's the same principle as for "const?", or "inout".

But you're right that my definition isn't very good.

T func(T)(T o);

That would work, unless you want a virtual function.

If templates were always an acceptable solution, the whole discussion about passing const qualifiers from the argument to the return value wouldn't be of any use either.


--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to