Function templates with more than one declaration?

Brian Palmer d at brian.codekitchen.net
Mon Apr 14 10:59:46 PDT 2008


I'm building a simple atom (symbol, whatever) library for a project, but I'm not really satisfied with my syntax for static atom literals. My template:

template atom(string name) {
  static Atom myAtom;
  static this() { myAtom = Atom(name); }
  Atom atom() { return myAtom; } /* Hopefully this will be inlined, haven't tested that yet... */
}

usage:

Atom name = atom!("name").atom;

The ideal, in my mind, would be to create Atom literals with the same Atom("name") syntax usable for creating Atoms at runtime. I'm pretty sure that won't be possible until templates can override functions, though. But I'd at least like to get rid of that last spurious `.atom` at the end of the declaration. Has anybody run into this situation before? What's the reason for only allowing "Implicit Template Properties" when the template declares exactly one member, anyway?


More information about the Digitalmars-d-learn mailing list