Function templates with more than one declaration?

boyd gaboonviper at gmx.net
Mon Apr 14 11:12:37 PDT 2008


Would a function template work in this case perhaps?

   Atom atom(string name)(){
     static Atom myAtom;
     myAtom = Atom(name);
     return myAtom;
   }

Cheers,
Boyd

-------
On Mon, 14 Apr 2008 19:59:46 +0200, Brian Palmer <d at brian.codekitchen.net>  
wrote:

> 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?



-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list