Enum type deduction inside templates is not working

H. S. Teoh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 27 07:26:09 PDT 2014


On Fri, Jun 27, 2014 at 06:04:18AM +0000, Uranuz via Digitalmars-d-learn wrote:
> Compiler can't deduce type for template struct Pair when using it with
> enum argument.  There is an example
> 
> import std.stdio;
> 
> enum Category { first, second, third };
> 
> struct Pair(F, S)
> {
> 	F first;
> 	S second;
> 	
> 	this(F f, S s)
> 	{
> 		first = f;
> 		second = s;
> 	}
> }
> 
> 
> void main()
> {
> 	auto p = Pair(Category.first, "first"); //It fails
> 	
> 	writeln(p);
> }
> 
> Is it not working for some reason or I'm doing something wrong or is
> it just lack of implementation? How I could make this working without
> explicit specifying of types?

Try this:

	struct Pair(F, S)
	{
		F first;
		S second;
	}

	auto pair(F,S)(F f, S s)
	{
		return Pair!(F,S)(f,s);
	}

	void main()
	{
		auto p = pair(Category.first, "first");
	}


T

-- 
Don't throw out the baby with the bathwater. Use your hands...


More information about the Digitalmars-d-learn mailing list