On Thu, May 12, 2022 at 09:04:09AM -0700, Ali Çehreli via Digitalmars-d-learn wrote: > On 5/11/22 18:06, Christopher Katko wrote: > > > Cool useful library functions like sumElement that magically don't > > work on static arrays. > > Yeah, that sometimes gets me as well. Although it is trivial to deal > with, the programmer may be surprised by the strange error messages: > > int[3] arr = [ 1, 2, 3 ]; > assert(sum(arr) == 6); > > Error: template `std.algorithm.iteration.sum` cannot deduce function from > argument types `!()(int[3])` > /usr/include/dlang/dmd/std/algorithm/iteration.d(7234): Candidates are: > `sum(R)(R r)` > with `R = int[3]` > must satisfy the following constraint: > ` isInputRange!R` > > WHAT? :) But the clue is on the last line above. [...]
Seriously though, that error message is horrendously ugly. I mean I've seen it thousands of times by now, so I know what it means and where to look for the actual problem. But it's eminently unfriendly to someone who doesn't already know the language very well. T -- A mathematician learns more and more about less and less, until he knows everything about nothing; whereas a philospher learns less and less about more and more, until he knows nothing about everything.