On Saturday, 2 July 2016 at 19:40:53 UTC, phant0m wrote:
On Saturday, 2 July 2016 at 19:25:37 UTC, ketmar wrote:
note the first "()", though: this is effectively a template function, which compiler will instantiate either with "ref" or without it.

Yeah, I've noticed it. Always using function template for this use case seems like a weird idea.

Try this little trick:

----
import std.stdio;

struct A {
        private A* _this = null;
        public int id = 0;
        
        this(int id) {
                this.id = id;
        }
        
        ref A byRef() {
                _this = &this;
                
                return *_this;
        }
}

void foo(ref const A a) {
        writeln(a.id);
}

void main() {
        foo(A(42).byRef());
}
----

Reply via email to