On Thursday, 3 October 2013 at 00:04:31 UTC, Jonathan M Davis
wrote:
On Thursday, October 03, 2013 01:39:38 Craig Dillabaugh wrote:
Hello,
I have the following program:

import std.file;
import std.stdio;

void main( string[] args ) {
string str = "Hello";
write( "file.txt", str );

string hello_file = readText("file.txt");

writeln( hello_file );
}

When I try to compile this I get:

test.d(6): Error: std.stdio.write!(string, string).write at
/usr/include/dmd/phobos/std/stdio.d(1656) conflicts with
std.file.write at /usr/include/dmd/phobos/std/file.d(318)

I think this should work. The example at the end of (D file I/0):

http://www.docwiki.net/view.php?pageid=145

Uses write() exactly the way I am using it here.

You have to give the full path - std.file.write. As both functions can take the same arguments, and you've imported both, the compiler has no way of knowing which you mean. So, you have to disambiguate for it. It's only a problem
because you imported both modules.

- Jonathan M Davis

Thanks.  Seems kind of an odd design decision (or oversight) that
two commonly used functions in the standard library would clash
in this manner, but I guess it is no big deal.

Cheers,

Craig

Reply via email to