> thanks for your answer. If it is that complicated if I prefer explicit > specialization, I think. But I do not quite understand that it is not > possible to achieve this with a simple "is" expression (without a > function like "isAnA" and using "__traits") as the D language reference > includes a very similiar example based on arrays: > > > static if (is(int[10] W : W[V], int V)) > > what is the essential difference to: > > static if( is( A!(int, "xxx") T == A!(T, s), string s ) )
I don't know. Maybe the compiler knows about arrays and associated arrays, whereas it isn't smart enough to extract the correct information from a templated type? The is() expression was not developed from first principles: it grew 'organically' as a hodge-podge of tricks and needs.