Обработка шаблонных структур D как общего типа

У меня проблемы с разработкой приложения D. Может быть, мой подход совершенно неправильный, поэтому я пришел сюда, чтобы вы меня спасти. Любые предложения, включая полное переписывание, приветствуются.

У меня есть несколько шаблонных типов:

enum Type : byte { Message='!', Integer='@' }

struct Token (T) {
    Type type;
    T value;
}

alias Token!string MessageToken;
alias Token!long   IntegerToken;

И мне нужно обрабатывать эти типы в целом:

AnyToken genToken(bool cond) {
  if (cond)
     return MessageToken(Type.Message, "nighly builds");
  else
      return IntegerToken(Type.Integer, -42);
}

AnyToken a = genToken(true);
AnyToken b = genToken(false);

Как мне добиться этого эффекта? Изменить: Также приветствуются альтернативы ООП.

5
задан Pedro Lacerda 6 February 2012 в 05:37
поделиться