errnoEnforce: which imports?

kdevel kdevel at vogtner.de
Fri Jun 29 01:25:39 UTC 2018


In https://dlang.org/phobos/std_exception.html#errnoEnforce this 
example is shown:

---
auto f = errnoEnforce(fopen("data.txt"));
auto line = readln(f);
enforce(line.length); // expect a non-empty line
---

I added

    import std.stdio;
    import std.exception;

and get an error message which reminds me of C++:

zz.d(8): Deprecation: std.stdio.fopen(R1, R2)(R1 name, R2 mode = 
"r") if ((isInputRange!R1 && isSomeChar!(ElementEncodingType!R1) 
|| isSomeString!R1) && (isInputRange!R2 && 
isSomeChar!(ElementEncodingType!R2) || isSomeString!R2)) is not 
visible from module zz
zz.d(8): Error: function std.stdio.fopen!(string, string).fopen 
is not accessible from module zz
zz.d(9): Error: template std.stdio.readln cannot deduce function 
from argument types !()(shared(_IO_FILE)*), candidates are:
[...]/dmd2/linux/bin64/../../src/phobos/std/stdio.d(4068):        
std.stdio.readln(S = string)(dchar terminator = '\x0a') if 
(isSomeString!S)
[...]/dmd2/linux/bin64/../../src/phobos/std/stdio.d(4102):        
std.stdio.readln(C)(ref C[] buf, dchar terminator = '\x0a') if 
(isSomeChar!C && is(Unqual!C == C) && !is(C == enum))
[...]/dmd2/linux/bin64/../../src/phobos/std/stdio.d(4109):        
std.stdio.readln(C, R)(ref C[] buf, R terminator) if 
(isSomeChar!C && is(Unqual!C == C) && !is(C == enum) && 
isBidirectionalRange!R && is(typeof(terminator.front == 
(dchar).init)))
make: *** [zz.o] Error 1

What's wrong here?


More information about the Digitalmars-d-learn mailing list