'Auto can only be used for template function arguments' what?

kenji hara k.hara.pg at gmail.com
Tue Jun 26 22:27:08 PDT 2012


2012/6/27 Jonathan M Davis <jmdavisProg at gmx.com>:
> On Wednesday, June 27, 2012 07:02:28 Mehrdad wrote:
>> On Wednesday, 27 June 2012 at 04:26:08 UTC, Jonathan M Davis
>>
>> wrote:
>> > And how would that work? auto ref duplicates the function. If
>> > you pass it an lvalue, then it generates a ref version.
>>
>> Two solutions:
>>
>> - Turn 'auto ref' into 'ref', but simply have the compiler
>> generate a copy for the caller if he wants to pass by value?
>
> That at least sounds like it would work. Walter may have a reason why it
> doesn't though, since he's the one that said that he didn't think that it was
> possible. Maybe he just didn't think of it, or maybe it causes some other
> problem that I can't think of.

After considering about 'auto ref', I was concluded that is an
inconsistency of current language spec and we cannot fix it correctly.

http://d.puremagic.com/issues/show_bug.cgi?id=8204

Therefore, I have created a thread to suggest new 'auto ref' recently.
http://forum.dlang.org/thread/CAFDvkcvf6G8Mc01Tds6ydXqCZbfp1q-a-oeFVk6BGEtwCiUAqg@mail.gmail.com

Kenji Hara


>> - Treat it as though it were a templated parameter. Why does it
>> make any difference here?
>
> You can't just templatize functions. There are places where templated
> functions _can't_ be used. For instance, templated functions can't be virtual.
> And a templated function _can_ be used, then the programmer can just
> templatize it themselves, avoiding any possible issues caused by functions be
> automatically templatized.
>
> - Jonathan M Davis


More information about the Digitalmars-d mailing list