The liabilities of binding rvalues to ref
Steven Schveighoffer
schveiguy at yahoo.com
Thu May 9 19:12:37 PDT 2013
On Thu, 09 May 2013 19:51:47 -0400, Manu <turkeyman at gmail.com> wrote:
> On 10 May 2013 08:50, Timon Gehr <timon.gehr at gmx.ch> wrote:
>> auto was carried over from C and originally stands for local lifetime.
>> It
>> does _not_ mean "apply type deduction here".
>
>
> Eh? 'local lifetime' doesn't sound like it has anything to do with 'apply
> type deduction here' to me; which is what D does.
auto does not imply type deduction, it is a storage class. D is able to
imply type deduction when it knows you are declaring a variable (hence the
storage class) and you omit the type. auto actually means 'local' in C.
D carries on that tradition, but adds the ability to define the type based
on the assignment.
These all work:
auto x = 1;
static x = 1;
const x = 1;
If the ref storage class could be used in a function/struct, this would
work too:
ref x = foo(); // assuming foo returns by ref
> Is this an argument to continue that trend?
> That said, I don't find this to be particularly true. Most things make
> reasonable sense.
I think there is no good reason to use auto ref, except that it's already
in the book. Any storage class would be fine, and auto ref is going to be
super-confusing because it's used elsewhere. Just my opinion.
-Steve
More information about the Digitalmars-d
mailing list