On Tuesday, 19 July 2016 at 12:23:11 UTC, celavek wrote:
On Tuesday, 19 July 2016 at 09:57:27 UTC, Lodovico Giaretta
wrote:
On Tuesday, 19 July 2016 at 09:42:40 UTC, celavek wrote:
Works for me:
size_t[char] counts;
const string dna_chain =
"AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC";
counts['A'] = countchars(dna_chain, "A");
It was failing for me as I was using "countchars!". I thought
that I should use the "!" in order to instantiate a template in
D. I'm still confused why it is working without the "!". Anyway
the compiler message was not very helpful.
The declaration is:
countchars(S, S1)(S str, S1 pattern)
So the most verbose way to instantiate it is:
countchars!(string, string)(dna_chain, "A")
But as S and S1 are the types of the two arguments, the compiler
can easily infer them, so you can write:
countchars(dna_chain, "A")
And have the compiler infer:
countchars!(typeof(dna_chain), typeof("A"))(dna_chain, "A")
The error message is technically correct: you cannot instantiate
countchars with template parameters `dna_chain` and `"A"`, which
is what you were actually doing.