Why is a cast needed here?

Chris Miller chris at dprogramming.com
Sun Nov 26 03:01:37 PST 2006


> "Dave" <Dave_member at pathlink.com> wrote in message
> news:eka11i$15v4$1 at digitaldaemon.com...
>> import std.socket;
>>
>> void main()
>> {
>> //Socket s = new
>> Socket(AddressFamily.INET,SocketType.STREAM,ProtocolType.TCP);
>>   Socket s = new
>> Socket(cast(AddressFamily)AddressFamily.INET,SocketType.STREAM,ProtocolType.TCP);
>> }
>>
>> Why is the 'cast(AddressFamily)' needed?
>>
>> W/o the cast:
>>
>> t.d(5): constructor std.socket.Socket.this () does not match parameter
>> types (int,SocketType,ProtocolType)
>> t.d(5): Error: cannot implicitly convert expression (2) of type int to
>> AddressFamily
>> t.d(5): Error: cannot implicitly convert expression (6) of type
>> ProtocolType to char[]
>> t.d(5): Error: cannot cast int to char[]
>>
>> Thanks!

On Sun, 26 Nov 2006 05:25:33 -0500, Daniel Giddings  
<daniel.giddings at gmail.com> wrote:

> Looks like its a bug in 0.175, I've just needed to add the same casts to  
> my
> code. It's a compiler issue rather than a lib issue, as the SocketType  
> and
> ProtocolType are declared as enums in the same way, but don't need the  
> cast.
>
> :-) Dan

I run into this issue with other code as well. I think it has to do with  
different enums used by overloaded functions.



More information about the Digitalmars-d-bugs mailing list