Parameterized enum does not work

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jan 8 23:52:49 PST 2015


On Friday, 9 January 2015 at 07:50:53 UTC, Daniel Kozak wrote:
> On Friday, 9 January 2015 at 06:17:53 UTC, Andre wrote:
>> Hi,
>>
>> Should following coding work?
>>
>> string lpad(ubyte length, long n)
>> {
>> 	import std.string: rightJustify;
>> 	import std.conv: to;
>> 	return rightJustify(to!string(n), length, '0');
>> }
>> 	
>> enum lpad14(long n) = lpad(14, n);
>>
>> void main()
>> {
>> 	lpad14(123);
>> }
>>
>> There is following error from dmd:
>>
>> source\app.d(12): Error: template app.lpad14 cannot deduce 
>> function from argumen
>> t types !()(int), candidates are:
>> source\app.d(8):        app.lpad14(long n)
>>
>> Kind regards
>> André
>
> What are you trying to do?

OK I probably see it now :):

import std.stdio;

string lpad(ubyte length, long n)
{
     import std.string: rightJustify;
     import std.conv: to;
     return rightJustify(to!string(n), length, '0');
}

enum lpad14(long n) = lpad(14, n);

void main()
{
     writeln(lpad14!(123));
}


More information about the Digitalmars-d-learn mailing list