Overloading for lvalue and rvalue.
Balagopal Komarath via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jun 12 13:40:52 PDT 2017
Is there a way to avoid the following combinatorial explosion of
overloaded functions when overloading for lvalue and rvalue
arguments? The following may be a bad example because int is
cheap to copy. So assume a large datatype instead of int.
import std.stdio;
void foo(in ref int a, in ref int b)
{
writeln("r, r");
}
void foo(in ref int a, in int b)
{
writeln("r, i");
}
void foo(in int a, in ref int b)
{
writeln("i, r");
}
void foo(in int a, in int b)
{
writeln("i, i");
}
void main()
{
int a, b;
foo(a, b);
foo(a, 0);
foo(0, a);
foo(0, 0);
}
More information about the Digitalmars-d-learn
mailing list