Creating new types from tuples.

Chris Nicholson-Sauls via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 6 20:14:51 PDT 2014


On Friday, 6 June 2014 at 23:44:04 UTC, Evan Davis wrote:
> Hello,
>
> I'm looking to use the Tuple type as a way of generating types 
> to represent data in a send recieve connection pair. I created 
> a template to try this:
>
>
> template s_to_c(UDP packetType) {
>          static if (packetType == UDP.ping) {
>     alias Tuple!() s_to_c;
>   } else static if (packetType == UDP.connect) {
>     alias Tuple!(byte) s_to_c;
>   } else static if (packetType == UDP.keep_alive) {
>     alias Tuple!() s_to_c;
>   }
> }
>
> (UDP is a enum with packet types.)
>
> This works, but it also means that s_to_c(UDP.ping) is the same 
> type as s_to_c(UDP.keep_alive). I want to be forced to 
> distinguish between types, even if they contain the same 
> fields, so that
>
> recieve(
>   (s_to_c!(UDP.ping) value) { },
>   (s_to_c!(UDP.keep_alive) value) { }
> )
>
> isn't an error.
>
> Any suggestions are welcome, and thanks for any help,
>
> -Evan Davis


Is there any reason you couldn't (or would rather not) use 
structs rather than tuples?



More information about the Digitalmars-d-learn mailing list