Delegate type deduction compile error
ref2401 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Apr 25 03:23:24 PDT 2015
struct MyStruct {}
void main(string[] args) {
string str = "blah-blah";
auto d1 = (MyStruct) { writeln("delegate-str: ", str); };
writeln(typeid(typeof(d1)));
}
dmd: 2067
os: Win8.1
build script: dmd main.d -ofconsole-app.exe -debug -unittest -wi
- if delegate has no params or param is declared as
int/char/float then the code compiles successfully.
auto d1 = (int) { writeln("delegate-str: ", str); };
- if I declare named param as string or MyStruct then the code
compiles successfully too.
auto d1 = (MyStruct ms) { writeln("delegate-str: ", str); };
- if I declare anonymous parameter as string or MyStruct then the
error compile occurs:
auto d1 = (MyStruct) { writeln("delegate-str: ", str); };
main.d(21): Error: variable main.main.d1 type void is inferred
from initializer (MyStruct)
{
writeln("delegate-str: ", str);
}
, and variables cannot be of type void
main.d(21): Error: template lambda has no value
Why does it happen?
More information about the Digitalmars-d-learn
mailing list