On 9/11/2010 9:32 PM, Nick Sabalausky wrote: > "Jacob Carlborg" <d...@me.com> wrote in message > news:i5t61q$2j7...@digitalmars.com... >> >> If you're not going to modify the content of the array I think this will >> work: >> >> void foo (T) (const(T)[] collection, T elem) {} >> >> This will allow both mutable, immutable and const arrays. But it will not >> let you modify the array like this: >> >> collection[3] = 'a'; >> > > On DMD 2.048, This isn't working for me: > > ----------------------------------------- > void foo(T)(const(T)[] coll, T elem) > { > } > > void main() > { > string x = "hello"; > foo(x, x[1]); > } > > ----------------------------------------- > > Result: > ----------------------------------------- > testStringAndChar.d(8): Error: template testStringAndChar.foo(T) does not > match any function template declaration > testStringAndChar.d(8): Error: template testStringAndChar.foo(T) cannot > deduce template function from argument types !()(string,immutable(char)) > ----------------------------------------- > > I figured that was just because 'const(immutable(T))[]' doesn't make much > sence, so I tried this and got the exact same error messages: > > ----------------------------------------- > import std.traits; > > void foo(T)(const(Unqual!T)[] coll, T elem) > { > } > > void main() > { > string x = "hello"; > foo(x, x[1]); > } > ----------------------------------------- > > It seems to be a problem with IFTI, because this does work with both > versions: > foo!char(x, x[1]); > > Kind of a pain. >
http://d.puremagic.com/issues/show_bug.cgi?id=2594