December 11, 2010 [Issue 5342] New: std.array does not respect immutable/const string qualifiers using front/back/etc | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=5342 Summary: std.array does not respect immutable/const string qualifiers using front/back/etc Product: D Version: D2 Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody@puremagic.com ReportedBy: sandford@jhu.edu --- Comment #0 from Rob Jacques <sandford@jhu.edu> 2010-12-11 01:05:42 PST --- Essentially, the ElementType! of all strings is a mutable dchar, even if the string itself is immutable. This means that generic code, like isAssignable!(ElementType!string, ElementType!string) passes when it shouldn't. Here is a simple template make fixing this a whole lot less painful. /// Apply the const-ness of Src to type Dst template Requal(Src,Dst) { static if(is( Unqual!Src == Src)) alias Dst Requal; static if(is(const Unqual!Src == Src)) alias const( Dst) Requal; static if(is(immutable Unqual!Src == Src)) alias immutable( Dst) Requal; static if(is(shared Unqual!Src == Src)) alias shared( Dst) Requal; static if(is(shared(const Unqual!Src) == Src)) alias shared(const Dst) Requal; } // example Requal!(typeof(A.init[0]), dchar) front(A)(A a) if (is(typeof(A[0])) && isNarrowString!A) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation