Daniel Keep wrote:
Hi all,

is there any way to prevent a struct from being created directly?
Basically, I want to prevent this:

{
  non_null!(T) a;
}

I want people to have to use provided functions to create a structure:

{
  auto a = non_null!(T)(new T);
}

  -- Daniel

struct non_null(T : class)
{
        // this should be private, but no can do
        // an alternative is to obscure _member somehow,
        // say, as a void*, just to make sure that nobody
        // uses it without it being obvious that they're doing
        // something bad
        T _member;

        T opDot ()
        {
                if (_member is null) _member = new T;
                return T;
        }
        
        non_null!(T) opAssign(T value)
        {
                demand (value !is null);
                _member = value;
        }
}

Reply via email to