[Issue 5342] New: std.array does not respect immutable/const string qualifiers using front/back/etc
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Dec 11 01:07:24 PST 2010
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 at puremagic.com
ReportedBy: sandford at jhu.edu
--- Comment #0 from Rob Jacques <sandford at 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: -------
More information about the Digitalmars-d-bugs
mailing list