Implicit string lit conversion to wstring/dstring

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Mar 14 12:07:04 PDT 2012


On 3/14/12 2:01 PM, H. S. Teoh wrote:
> However, this change broke this code:
>
> 	AssociativeArray!(wstring,int) aa;
> 	aa["abc"] = 123;	// error: compiler deduces K as string,
> 				// so isCompatWithKey!K fails: string
> 				// can't implicitly convert to wstring
>
> Whereas before, when opIndexAssign looked like this:
>
> 		void opIndexAssign(in Value v, in Key key)
> 		{
> 			...
> 		}
>
> everything worked, because the compiler deduces the type of "abc" as
> wstring since Key==wstring.

Aha! This is one of those cases in which built-in magic smells of putrid 
beef soup.

I think it's possible to still make this work by beefing up the template 
constraints such that the working signature is selected for strings.


Andrei



More information about the Digitalmars-d mailing list