structs are now lvalues - what is with "auto ref"?
Jonathan M Davis
jmdavisProg at gmx.com
Sun Dec 23 19:28:52 PST 2012
On Monday, December 24, 2012 02:41:41 Namespace wrote:
> > Plenty of people are using it with the problems that it
> > currently has
>
> But how long?
>
> For the moment (or the next 2, 3 releases) it should be enough if
> I write
> void foo()(auto ref const Foo f) {
> instead of
> void foo(ref const Foo f) {
>
> or is there any difficulty? After all it's a template now.
If you templatize a function, then you can use auto ref with it, and auto ref
functions will work with both lvalues and rvalues without copying either. It
basically creates two overloads - a ref and non-ref version. The ref version
takes lvalues and obviously won't make copies. The non-ref version _might_
copy but shouldn't, because the compiler will generally move rvalues values
rather than copying them.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list