equivalent of C++ implicit constructors and conversion operators

Robert Clipsham robert at octarineparrot.com
Fri Apr 23 09:46:21 PDT 2010


On 23/04/10 17:22, #ponce wrote:
> In C++ implicit constructors and conversion operators allow a user-defined type to act quite like a builtin-type.
>
>    struct half
>    {
>        half(float x);l
>        inline operator float() const;
>    }
>
> allows to write:
>
>    half x = 1.f;
>    float f = x;
>
> and this is especially useful for templates.
> I couldn't find a similar construct in D, is there any?

A combination of alias this and opAssign should work:
----
struct half
{
   float f;
   alias f this;
   half opAssign(float fl)
   {
     f = fl;
     return this;
   }
}

void main()
{
   half x;
   // For some reason I got a compilation error with half x = 1f;
   x = 1f;
   float f = x;
}
----


More information about the Digitalmars-d-learn mailing list