| Thread overview |
|---|
January 04, 2015 Template function type inference with default arguments | ||||
|---|---|---|---|---|
| ||||
Why don't templates take a type from the default argument if nothing else is supplied? It would be useful to be able to use an enum to set a default.
enum MAX = 1_000;
auto sieve(T)(T max = MAX) {
import std.bitmanip : BitArray;
BitArray n;
n.length = max;
T[] primes = [2];
for(T i = 3; i < max; i += 2)
if(n[i] == 0) {
primes ~= i;
for(T j = i + i; j < max; j += i)
n[j] = 1;
}
return primes;
}
Changing the type to T = typeof(MAX) works but feels unnecessarily clunky and out of step with how templates normally operate when supplied with an argument.
| ||||
January 04, 2015 Re: Template function type inference with default arguments | ||||
|---|---|---|---|---|
| ||||
Posted in reply to ixid | On Sunday, 4 January 2015 at 00:22:01 UTC, ixid wrote:
> Why don't templates take a type from the default argument if nothing else is supplied? It would be useful to be able to use an enum to set a default.
I doubt anyone's ever thought of that particular use-case. Using your typeof(MAX) workaround is probably as good as it's going to get for the time being.
| |||
January 06, 2015 Re: Template function type inference with default arguments | ||||
|---|---|---|---|---|
| ||||
Posted in reply to ixid | On Sunday, 4 January 2015 at 00:22:01 UTC, ixid wrote: > Why don't templates take a type from the default argument if nothing else is supplied? https://issues.dlang.org/show_bug.cgi?id=2803 | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply