Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
January 09, 2015 Parameterized enum does not work | ||||
---|---|---|---|---|
| ||||
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é |
January 09, 2015 Re: Parameterized enum does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andre | 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?
|
January 09, 2015 Re: Parameterized enum does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | 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));
}
|
January 09, 2015 Re: Parameterized enum does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | 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));
}
|
January 09, 2015 Re: Parameterized enum does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | Thanks a lot.
Kind regards
André
On Friday, 9 January 2015 at 07:59:51 UTC, Daniel Kozak wrote:
> 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));
> }
|
Copyright © 1999-2021 by the D Language Foundation