Specialization Not Allowed for Deduced Parameter

Yota via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Aug 22 13:42:48 PDT 2014


Heya.  I'm working on a simple units-of-measure implementation in 
DMD 2.066.0, and it doesn't seem to like the signature of my '*' 
operator below.  I'm afraid I don't understand what the error 
description is trying to tell me.  Here's a reduced case:

public struct UnitDef(string unitString) {
	// Error: "specialization not allowed for deduced parameter N"
	auto opBinary(string op, UT : UnitDef!N, string N)(UT rhs) if 
(op == "*") {
		return UnitDef!(unitString ~ " " ~ N)();
	}
}

enum ft = UnitDef!"ft"();
enum s = UnitDef!"s"();

pragma(msg, typeof(ft*s));

I've tried the same code in DPaste, and it compiles just fine.


Can anyone shed some light on what I may be doing wrong?  I 
always seem to get bitten when working with template arguments, 
so it's probably just me.


More information about the Digitalmars-d-learn mailing list