http://d.puremagic.com/issues/show_bug.cgi?id=4284
Summary: empty string[] alias lacks .length in a template Product: D Version: future Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: bearophile_h...@eml.cc --- Comment #0 from bearophile_h...@eml.cc 2010-06-06 06:43:17 PDT --- This looks like a correct D2 program: import std.string: split; template Foo(alias items) { static if (items.length == 0) enum Foo = 1; else enum Foo = 2; } enum string[] items = split(""); static assert(Foo!(items) == 1); void main() {} But DMD v2.046 prints at compile-time: test.d(3): Error: expression (null.length) == 0u is not constant or does not evaluate to a bool test.d(9): Error: template instance test.Foo!(items) error instantiating test.d(9): Error: static assert (2 == 1) is false ------------------------ To fix it you have to test for null too: import std.string: split; template Foo(alias items) { static if (items == null || items.length == 0) enum Foo = 1; else enum Foo = 2; } enum string[] items = split(""); static assert(Foo!(items) == 1); void main() {} -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------