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