[Issue 12461] Typedef and opOpAssign

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Wed Apr 23 14:26:26 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=12461

--- Comment #3 from Andrej Mitrovic <andrej.mitrovich at gmail.com> ---
(In reply to bearophile_hugs from comment #2)
> (In reply to Andrej Mitrovic from comment #1)
> 
> > But I'm not sure if this is the appropriate fix.
> > Do you have a better idea?
> 
> In Haskell this doesn't compile (newtype is a built-in that is similar to
> Typedef).
> You have to ask the compiler to activate the arithmetic operations between
> two newtypes.

Sounds like a more configurable and complex version of Typedef. Note that 99%
of the work of Typedef is done by Proxy, Typedef simply stores a Proxy inside
and otherwise has a very minimal implementation.

Anyway I could imagine there is a million little ways you could configure a
Typedef, but maybe it's best to have the scaffolding available as a set of
mixin templates, so the user can easily create their own specific versions,
e.g.:

struct UserTypedef(T)
{
    mixin MixOverload!"opUnary";  // implement opUnary
    mixin MixOverload!"opBinary";  // implement opBinary
}

This is probably simpler than having a super-complicated generic Typedef
structure such as:

struct Typedef(bool useOpUnary, bool useOpBinary, ...);

--


More information about the Digitalmars-d-bugs mailing list