Tuples, CTFE, and Sliding Template Arguments
Richard (Rikki) Andrew Cattermole
richard at cattermole.co.nz
Sun Jan 14 08:26:10 UTC 2024
On 14/01/2024 9:23 PM, Richard (Rikki) Andrew Cattermole wrote:
> auto execi(FormatString fmt, Args...)(Sqlite db, Args args) { enum query
> = () { string ret; static foreach(i; 0 .. Args.length) { foreach(prefix;
> __traits(getAttributes, args[i], IPrefix)) { ret ~= prefix.value; } ret
> ~= "?"; ret ~= i.text; } return ret; }(); auto statement = Statement(db,
> query); static foreach (i, arg; args) statement.bind(i + 1, arg); return
> statement.execute(); }
Ugh oops, left in the FormatString template parameter.
Should be:
```d
auto execi(Args...)(Sqlite db, Args args) {
enum query = () {
string ret;
static foreach(i; 0 .. Args.length) {
foreach(prefix; __traits(getAttributes, args[i], IPrefix)) {
ret ~= prefix.value;
}
ret ~= "?";
ret ~= i.text;
}
return ret;
}();
auto statement = Statement(db, query);
static foreach (i, arg; args)
statement.bind(i + 1, arg);
return statement.execute();
}
```
More information about the Digitalmars-d
mailing list