April 12, 2014 [Issue 12569] New: Better error message for std.algorithm.reduce used with two functions and a scalar seed | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=12569 Issue ID: 12569 Summary: Better error message for std.algorithm.reduce used with two functions and a scalar seed Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Keywords: diagnostic Severity: normal Priority: P1 Component: Phobos Assignee: nobody@puremagic.com Reporter: bearophile_hugs@eml.cc This code compiles: void main() { import std.algorithm: min, max, reduce; import std.typecons: tuple; dchar c = 'a'; reduce!(min, max)(tuple(c, c), "hello"); // OK } But here I have forgotten to use a 2-tuple as seed for reduce: void main() { import std.algorithm: min, max, reduce; import std.typecons: tuple; dchar c = 'a'; reduce!(min, max)(c, "hello"); // error } DMD 2.066alpha gives an error inside std.algorithm, but I think it's better to add a template constraint to std.algorithm.reduce or a static if to guard against this mistake: ...\dmd2\src\phobos\std\algorithm.d(772,45): Error: no property 'Types' for type 'dchar' test.d(5,22): Error: template instance std.algorithm.reduce!(min, max).reduce!(dchar, string) error instantiating -- |
Copyright © 1999-2021 by the D Language Foundation