Function templates do implicit conversions for their arguments
TommiT
tommitissari at hotmail.com
Tue Jul 2 13:12:24 PDT 2013
On Tuesday, 2 July 2013 at 19:39:56 UTC, Maxim Fomin wrote:
> [..] This is how alias this is designed to work. What have you
> surprised here?
I had started to think about "alias this" as C++'s implicit
conversion operator. And I remembered wrong how "alias this" was
explained in TDPL. I remembered it somehow like this:
"Whenever a variable der of type Derived is used where a type
Base is expected, the compiler tries der.getBase also." (assuming
"alias getBase this;" in Derived)
And since a templated parameter doesn't *expect* anything, I
figured it wouldn't convert.
But "alias this" is defined in TDPL (page 265) like so:
"The workings of alias payload this are quite simple. Whenever a
value obj of type Final!T is used in a context that would be
illegal for its type, the compiler rewrites obj as obj.payload."
Just an honest mistake on my part.
More information about the Digitalmars-d
mailing list