On Wednesday, 21 February 2018 at 14:11:10 UTC, ParticlePeter
wrote:
struct Foo(T) {
T bar;
this(S)(S s) {
bar = convert(s);
}
}
auto foo = Foo!int(some_float);
this works because S is deduced as typeof(some_float), but how
would I instantiate the struct without relying on auto
deduction?
Suppose we would have this kind of constructor where auto
deduction is not possible:
this(int n)(float f) {
static foreach( i; 0..n) { do_some_ctfe_magic;}
}
How to instantiate Foo then?
No can do. The solution is to use a factory function:
struct Foo(T) {
static Foo create(int n)(float f) {
Foo result;
static foreach( i; 0..n) { do_some_ctfe_magic;}
return result;
}
}
--
Simen