std.stdio breaks casting operation

anonymous via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 23 12:20:53 PDT 2014


On Thursday, 23 October 2014 at 18:43:54 UTC, tcak wrote:
> Then I change the "Test.setIt" method as follows:
>
> 		import std.stdio;
> 		s = cast( typeof( s ) )sock;
>
>
> Error on "s = cast..." line:
> cannot cast module socket of type void to shared(Socket)

Apparently std.stdio defines an alias `sock` to some module. When
you import std.stdio, its `sock` takes precedence over the
parameter `sock`.

I don't know if symbols from local imports should override
parameters just like that. There may be some room for improvement
here.

In the meantime, you can make the import static/renamed/selective:

static import std.stdio; /* must write `std.stdio.foo` */
import io = std.stdio; /* must write `io.foo` */
import std.stdio: foo; /* only foo is imported */


More information about the Digitalmars-d-learn mailing list