Parameterized enum does not work
Daniel Kozak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 8 23:59:50 PST 2015
On Friday, 9 January 2015 at 07:52:50 UTC, Daniel Kozak wrote:
> 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));
> }
However this is only for compile time, if you want runtime
version you need something like this:
import std.stdio;
string lpad(ubyte length)(long n)
{
import std.string: rightJustify;
import std.conv: to;
return rightJustify(to!string(n), length, '0');
}
alias lpad14 = lpad!14;
void main()
{
writeln(lpad14(123));
}
More information about the Digitalmars-d-learn
mailing list