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;
}
----

Reply via email to