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?

Reply via email to