Constructor call must be in a constructor

Jesse Phillips jessekphillips+D at gmail.com
Wed Jul 6 16:22:40 PDT 2011


Loopback Wrote:

> Hi!
> 
> While implementing and overloading several different operators for my
> structure I've got stuck with an error.
> 
> As noticed in the attachment, in my opBinaryRight function I mimic the
> opBinary (left) operator by instantiating the structure itself to avoid
> implementing duplicates of the binary operator overloads.
> 
> The opBinaryRight operator is defined as following:
> 
> DVector2 opBinaryRight(string op, T)(T lhs) if(Accepts!T)
> {
> 	// Error: template instance vector.DVector2.__ctor!(DVector2) error 
> instantiating
> 	return DVector2(lhs).opBinary!op(this);
> }
> 
> I create an additional DVector2 structure and then calls the opBinary
> operator. When creating this DVector2 structure the following
> constructor gets called:
> 
> this(T)(T arg) if(Accepts!T)
> {
> 	static if(isScalar!T)
> 		this(arg, arg);
> 	else
> 		// Error: constructor call must be in a constructor
> 		this(arg.tupleof);
> }
> 
> [Blah, blah, blah]

This is probably related to a question recently asked on SO, which you might have even been the author. But for synergy: http://stackoverflow.com/questions/6553950/how-to-use-template-constructors-in-d


More information about the Digitalmars-d-learn mailing list