Thread overview
[phobos] phobos commit, revision 2354
Jan 21, 2011
dsource.org
Jan 21, 2011
Brad Roberts
Jan 22, 2011
Brad Roberts
Jan 22, 2011
Brad Roberts
Jan 22, 2011
Brad Roberts
January 21, 2011
phobos commit, revision 2354


user: andrei

msg:
Improvements to replicate(); documented splitter() for strings; renamed replace() in place to replaceInPlace(); removed replace() that takes void* in the last position; moved replace() from string to array and generalized it; attached constraint to functional.not; more cleanup of std.string; improved std.algorithm.util and count to accept ranges; improved constraint in std.algorithm.remove

http://www.dsource.org/projects/phobos/changeset/2354

paths changed:
U   trunk/phobos/std/algorithm.d
U   trunk/phobos/std/array.d
U   trunk/phobos/std/functional.d
U   trunk/phobos/std/path.d
U   trunk/phobos/std/string.d

January 21, 2011
On 1/21/2011 12:39 AM, dsource.org wrote:
> phobos commit, revision 2354
> 
> 
> user: andrei
> 
> msg:
> Improvements to replicate(); documented splitter() for strings; renamed replace() in place to replaceInPlace(); removed replace() that takes void* in the last position; moved replace() from string to array and generalized it; attached constraint to functional.not; more cleanup of std.string; improved std.algorithm.util and count to accept ranges; improved constraint in std.algorithm.remove
> 
> http://www.dsource.org/projects/phobos/changeset/2354
> 
> paths changed:
> U   trunk/phobos/std/algorithm.d
> U   trunk/phobos/std/array.d
> U   trunk/phobos/std/functional.d
> U   trunk/phobos/std/path.d
> U   trunk/phobos/std/string.d

Sigh.. since this submit, the dmd test suite has been failing since the driver no longer builds.

            s = replace(s, "/", envData.sep);

d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
(isDynamicArray!(R1) && isForwardRange!(R2) && isForwardRange!(R3)) does not
match any function template declaration
d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
(isDynamicArray!(R1) && isForwardRange!(R2) && isForwardRange!(R3)) cannot
deduce template function from argument types
!()(string,string,const(immutable(char)[]))

I tried changing it to: replaceInPlace(s, "/", envData.sep); with no improvement.

d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
(isDynamicArray!(Range) && is(ElementType!(Range) : T)) does not match any
function template declaration
d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
(isDynamicArray!(Range) && is(ElementType!(Range) : T)) cannot deduce template
function from argument types !()(string,string,const(immutable(char)[]))


January 21, 2011
That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.

I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.


Andrei

On 1/21/11 1:04 PM, Brad Roberts wrote:
> On 1/21/2011 12:39 AM, dsource.org wrote:
>> phobos commit, revision 2354
>>
>>
>> user: andrei
>>
>> msg:
>> Improvements to replicate(); documented splitter() for strings; renamed replace() in place to replaceInPlace(); removed replace() that takes void* in the last position; moved replace() from string to array and generalized it; attached constraint to functional.not; more cleanup of std.string; improved std.algorithm.util and count to accept ranges; improved constraint in std.algorithm.remove
>>
>> http://www.dsource.org/projects/phobos/changeset/2354
>>
>> paths changed:
>> U   trunk/phobos/std/algorithm.d
>> U   trunk/phobos/std/array.d
>> U   trunk/phobos/std/functional.d
>> U   trunk/phobos/std/path.d
>> U   trunk/phobos/std/string.d
>
> Sigh.. since this submit, the dmd test suite has been failing since the driver no longer builds.
>
>              s = replace(s, "/", envData.sep);
>
> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
> (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) does not
> match any function template declaration
> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
> (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) cannot
> deduce template function from argument types
> !()(string,string,const(immutable(char)[]))
>
> I tried changing it to: replaceInPlace(s, "/", envData.sep); with no improvement.
>
> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
> (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) does not match any
> function template declaration
> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
> (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) cannot deduce template
> function from argument types !()(string,string,const(immutable(char)[]))
>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
January 21, 2011
Ok.

On Fri, 21 Jan 2011, Andrei Alexandrescu wrote:

> Date: Fri, 21 Jan 2011 18:57:31 -0600
> From: Andrei Alexandrescu <andrei at erdani.com>
> Reply-To: Discuss the phobos library for D <phobos at puremagic.com>
> To: Discuss the phobos library for D <phobos at puremagic.com>
> Subject: Re: [phobos] phobos commit, revision 2354
> 
> That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.
> 
> I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.
> 
> 
> Andrei
> 
> On 1/21/11 1:04 PM, Brad Roberts wrote:
> > On 1/21/2011 12:39 AM, dsource.org wrote:
> > > phobos commit, revision 2354
> > > 
> > > 
> > > user: andrei
> > > 
> > > msg:
> > > Improvements to replicate(); documented splitter() for strings; renamed
> > > replace() in place to replaceInPlace(); removed replace() that takes void*
> > > in the last position; moved replace() from string to array and generalized
> > > it; attached constraint to functional.not; more cleanup of std.string;
> > > improved std.algorithm.util and count to accept ranges; improved
> > > constraint in std.algorithm.remove
> > > 
> > > http://www.dsource.org/projects/phobos/changeset/2354
> > > 
> > > paths changed:
> > > U   trunk/phobos/std/algorithm.d
> > > U   trunk/phobos/std/array.d
> > > U   trunk/phobos/std/functional.d
> > > U   trunk/phobos/std/path.d
> > > U   trunk/phobos/std/string.d
> > 
> > Sigh.. since this submit, the dmd test suite has been failing since the
> > driver
> > no longer builds.
> > 
> >              s = replace(s, "/", envData.sep);
> > 
> > d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
> > (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) does not
> > match any function template declaration
> > d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
> > (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) cannot
> > deduce template function from argument types
> > !()(string,string,const(immutable(char)[]))
> > 
> > I tried changing it to: replaceInPlace(s, "/", envData.sep); with no
> > improvement.
> > 
> > d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
> > (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) does not match any
> > function template declaration
> > d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
> > (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) cannot deduce
> > template
> > function from argument types !()(string,string,const(immutable(char)[]))
> > 
> > 
> > _______________________________________________
> > phobos mailing list
> > phobos at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
> 
January 21, 2011
Ok, I had to not just to!string(envData.sep), but also change it to:
   s = replace(...);

I predict lots of pain from the next release.  User impacting changes suck.  I'm tempted to suggest that we pile on as many as we can squeeze into this one just to concentrate the pain into one release rather than spread out over several that are individually painful.

Thoughts?

On 1/21/2011 6:13 PM, Brad Roberts wrote:
> Ok.
> 
> On Fri, 21 Jan 2011, Andrei Alexandrescu wrote:
> 
>> Date: Fri, 21 Jan 2011 18:57:31 -0600
>> From: Andrei Alexandrescu <andrei at erdani.com>
>> Reply-To: Discuss the phobos library for D <phobos at puremagic.com>
>> To: Discuss the phobos library for D <phobos at puremagic.com>
>> Subject: Re: [phobos] phobos commit, revision 2354
>>
>> That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.
>>
>> I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.
>>
>>
>> Andrei
>>
>> On 1/21/11 1:04 PM, Brad Roberts wrote:
>>> On 1/21/2011 12:39 AM, dsource.org wrote:
>>>> phobos commit, revision 2354
>>>>
>>>>
>>>> user: andrei
>>>>
>>>> msg:
>>>> Improvements to replicate(); documented splitter() for strings; renamed
>>>> replace() in place to replaceInPlace(); removed replace() that takes void*
>>>> in the last position; moved replace() from string to array and generalized
>>>> it; attached constraint to functional.not; more cleanup of std.string;
>>>> improved std.algorithm.util and count to accept ranges; improved
>>>> constraint in std.algorithm.remove
>>>>
>>>> http://www.dsource.org/projects/phobos/changeset/2354
>>>>
>>>> paths changed:
>>>> U   trunk/phobos/std/algorithm.d
>>>> U   trunk/phobos/std/array.d
>>>> U   trunk/phobos/std/functional.d
>>>> U   trunk/phobos/std/path.d
>>>> U   trunk/phobos/std/string.d
>>>
>>> Sigh.. since this submit, the dmd test suite has been failing since the
>>> driver
>>> no longer builds.
>>>
>>>              s = replace(s, "/", envData.sep);
>>>
>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>> (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) does not
>>> match any function template declaration
>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>> (isDynamicArray!(R1)&&  isForwardRange!(R2)&&  isForwardRange!(R3)) cannot
>>> deduce template function from argument types
>>> !()(string,string,const(immutable(char)[]))
>>>
>>> I tried changing it to: replaceInPlace(s, "/", envData.sep); with no
>>> improvement.
>>>
>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>> (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) does not match any
>>> function template declaration
>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>> (isDynamicArray!(Range)&&  is(ElementType!(Range) : T)) cannot deduce
>>> template
>>> function from argument types !()(string,string,const(immutable(char)[]))
>>>
>>>
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
>>

January 22, 2011
I guess I'll change the code to be backwards compatible.

Andrei

On 1/22/11 1:18 AM, Brad Roberts wrote:
> Ok, I had to not just to!string(envData.sep), but also change it to:
>     s = replace(...);
>
> I predict lots of pain from the next release.  User impacting changes suck.  I'm tempted to suggest that we pile on as many as we can squeeze into this one just to concentrate the pain into one release rather than spread out over several that are individually painful.
>
> Thoughts?
>
> On 1/21/2011 6:13 PM, Brad Roberts wrote:
>> Ok.
>>
>> On Fri, 21 Jan 2011, Andrei Alexandrescu wrote:
>>
>>> Date: Fri, 21 Jan 2011 18:57:31 -0600
>>> From: Andrei Alexandrescu<andrei at erdani.com>
>>> Reply-To: Discuss the phobos library for D<phobos at puremagic.com>
>>> To: Discuss the phobos library for D<phobos at puremagic.com>
>>> Subject: Re: [phobos] phobos commit, revision 2354
>>>
>>> That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.
>>>
>>> I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.
>>>
>>>
>>> Andrei
>>>
>>> On 1/21/11 1:04 PM, Brad Roberts wrote:
>>>> On 1/21/2011 12:39 AM, dsource.org wrote:
>>>>> phobos commit, revision 2354
>>>>>
>>>>>
>>>>> user: andrei
>>>>>
>>>>> msg:
>>>>> Improvements to replicate(); documented splitter() for strings; renamed
>>>>> replace() in place to replaceInPlace(); removed replace() that takes void*
>>>>> in the last position; moved replace() from string to array and generalized
>>>>> it; attached constraint to functional.not; more cleanup of std.string;
>>>>> improved std.algorithm.util and count to accept ranges; improved
>>>>> constraint in std.algorithm.remove
>>>>>
>>>>> http://www.dsource.org/projects/phobos/changeset/2354
>>>>>
>>>>> paths changed:
>>>>> U   trunk/phobos/std/algorithm.d
>>>>> U   trunk/phobos/std/array.d
>>>>> U   trunk/phobos/std/functional.d
>>>>> U   trunk/phobos/std/path.d
>>>>> U   trunk/phobos/std/string.d
>>>>
>>>> Sigh.. since this submit, the dmd test suite has been failing since the
>>>> driver
>>>> no longer builds.
>>>>
>>>>               s = replace(s, "/", envData.sep);
>>>>
>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>> (isDynamicArray!(R1)&&   isForwardRange!(R2)&&   isForwardRange!(R3)) does not
>>>> match any function template declaration
>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>> (isDynamicArray!(R1)&&   isForwardRange!(R2)&&   isForwardRange!(R3)) cannot
>>>> deduce template function from argument types
>>>> !()(string,string,const(immutable(char)[]))
>>>>
>>>> I tried changing it to: replaceInPlace(s, "/", envData.sep); with no
>>>> improvement.
>>>>
>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>> (isDynamicArray!(Range)&&   is(ElementType!(Range) : T)) does not match any
>>>> function template declaration
>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>> (isDynamicArray!(Range)&&   is(ElementType!(Range) : T)) cannot deduce
>>>> template
>>>> function from argument types !()(string,string,const(immutable(char)[]))
>>>>
>>>>
>>>> _______________________________________________
>>>> phobos mailing list
>>>> phobos at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
January 21, 2011
I'm not sure I'd bother.  Given all the changes, aren't there likely to be a lot of things broken?  This app used just one or two things that were, but it's tiny.  I'll bet that in the wider realm of d2 users that it's going to be a whole lot more and not just replace.



On 1/21/2011 11:32 PM, Andrei Alexandrescu wrote:
> I guess I'll change the code to be backwards compatible.
> 
> Andrei
> 
> On 1/22/11 1:18 AM, Brad Roberts wrote:
>> Ok, I had to not just to!string(envData.sep), but also change it to:
>>     s = replace(...);
>>
>> I predict lots of pain from the next release.  User impacting changes suck.  I'm tempted to suggest that we pile on as many as we can squeeze into this one just to concentrate the pain into one release rather than spread out over several that are individually painful.
>>
>> Thoughts?
>>
>> On 1/21/2011 6:13 PM, Brad Roberts wrote:
>>> Ok.
>>>
>>> On Fri, 21 Jan 2011, Andrei Alexandrescu wrote:
>>>
>>>> Date: Fri, 21 Jan 2011 18:57:31 -0600
>>>> From: Andrei Alexandrescu<andrei at erdani.com>
>>>> Reply-To: Discuss the phobos library for D<phobos at puremagic.com>
>>>> To: Discuss the phobos library for D<phobos at puremagic.com>
>>>> Subject: Re: [phobos] phobos commit, revision 2354
>>>>
>>>> That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.
>>>>
>>>> I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.
>>>>
>>>>
>>>> Andrei
>>>>
>>>> On 1/21/11 1:04 PM, Brad Roberts wrote:
>>>>> On 1/21/2011 12:39 AM, dsource.org wrote:
>>>>>> phobos commit, revision 2354
>>>>>>
>>>>>>
>>>>>> user: andrei
>>>>>>
>>>>>> msg:
>>>>>> Improvements to replicate(); documented splitter() for strings; renamed
>>>>>> replace() in place to replaceInPlace(); removed replace() that takes void*
>>>>>> in the last position; moved replace() from string to array and generalized
>>>>>> it; attached constraint to functional.not; more cleanup of std.string;
>>>>>> improved std.algorithm.util and count to accept ranges; improved
>>>>>> constraint in std.algorithm.remove
>>>>>>
>>>>>> http://www.dsource.org/projects/phobos/changeset/2354
>>>>>>
>>>>>> paths changed:
>>>>>> U   trunk/phobos/std/algorithm.d
>>>>>> U   trunk/phobos/std/array.d
>>>>>> U   trunk/phobos/std/functional.d
>>>>>> U   trunk/phobos/std/path.d
>>>>>> U   trunk/phobos/std/string.d
>>>>>
>>>>> Sigh.. since this submit, the dmd test suite has been failing since the
>>>>> driver
>>>>> no longer builds.
>>>>>
>>>>>               s = replace(s, "/", envData.sep);
>>>>>
>>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>>> (isDynamicArray!(R1)&&   isForwardRange!(R2)&&   isForwardRange!(R3)) does not
>>>>> match any function template declaration
>>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>>> (isDynamicArray!(R1)&&   isForwardRange!(R2)&&   isForwardRange!(R3)) cannot
>>>>> deduce template function from argument types
>>>>> !()(string,string,const(immutable(char)[]))
>>>>>
>>>>> I tried changing it to: replaceInPlace(s, "/", envData.sep); with no
>>>>> improvement.
>>>>>
>>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>>> (isDynamicArray!(Range)&&   is(ElementType!(Range) : T)) does not match any
>>>>> function template declaration
>>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>>> (isDynamicArray!(Range)&&   is(ElementType!(Range) : T)) cannot deduce
>>>>> template
>>>>> function from argument types !()(string,string,const(immutable(char)[]))
>>>>>

January 22, 2011
It's not as bad as the new documentation implies. I left public aliases for all moved symbols. The only issue I found with them is that under certain circumstances, the compiler thinks those aliases are conflicting with their originals. (I was unable to reduce that to a simple case.)

Andrei

On 1/22/11 1:40 AM, Brad Roberts wrote:
> I'm not sure I'd bother.  Given all the changes, aren't there likely to be a lot of things broken?  This app used just one or two things that were, but it's tiny.  I'll bet that in the wider realm of d2 users that it's going to be a whole lot more and not just replace.
>
>
>
> On 1/21/2011 11:32 PM, Andrei Alexandrescu wrote:
>> I guess I'll change the code to be backwards compatible.
>>
>> Andrei
>>
>> On 1/22/11 1:18 AM, Brad Roberts wrote:
>>> Ok, I had to not just to!string(envData.sep), but also change it to:
>>>      s = replace(...);
>>>
>>> I predict lots of pain from the next release.  User impacting changes suck.  I'm tempted to suggest that we pile on as many as we can squeeze into this one just to concentrate the pain into one release rather than spread out over several that are individually painful.
>>>
>>> Thoughts?
>>>
>>> On 1/21/2011 6:13 PM, Brad Roberts wrote:
>>>> Ok.
>>>>
>>>> On Fri, 21 Jan 2011, Andrei Alexandrescu wrote:
>>>>
>>>>> Date: Fri, 21 Jan 2011 18:57:31 -0600
>>>>> From: Andrei Alexandrescu<andrei at erdani.com>
>>>>> Reply-To: Discuss the phobos library for D<phobos at puremagic.com>
>>>>> To: Discuss the phobos library for D<phobos at puremagic.com>
>>>>> Subject: Re: [phobos] phobos commit, revision 2354
>>>>>
>>>>> That's due to replace()'s inability to deal with fixed-size immutable arrays. I don't want to do surgery on it because I think we need to look for a principled solution for the future.
>>>>>
>>>>> I can't commit d_do_test.d. To make it work, replace envData.sep with to!string(envData.sep) in lines 132 and 139.
>>>>>
>>>>>
>>>>> Andrei
>>>>>
>>>>> On 1/21/11 1:04 PM, Brad Roberts wrote:
>>>>>> On 1/21/2011 12:39 AM, dsource.org wrote:
>>>>>>> phobos commit, revision 2354
>>>>>>>
>>>>>>>
>>>>>>> user: andrei
>>>>>>>
>>>>>>> msg:
>>>>>>> Improvements to replicate(); documented splitter() for strings; renamed
>>>>>>> replace() in place to replaceInPlace(); removed replace() that takes void*
>>>>>>> in the last position; moved replace() from string to array and generalized
>>>>>>> it; attached constraint to functional.not; more cleanup of std.string;
>>>>>>> improved std.algorithm.util and count to accept ranges; improved
>>>>>>> constraint in std.algorithm.remove
>>>>>>>
>>>>>>> http://www.dsource.org/projects/phobos/changeset/2354
>>>>>>>
>>>>>>> paths changed:
>>>>>>> U   trunk/phobos/std/algorithm.d
>>>>>>> U   trunk/phobos/std/array.d
>>>>>>> U   trunk/phobos/std/functional.d
>>>>>>> U   trunk/phobos/std/path.d
>>>>>>> U   trunk/phobos/std/string.d
>>>>>>
>>>>>> Sigh.. since this submit, the dmd test suite has been failing since the
>>>>>> driver
>>>>>> no longer builds.
>>>>>>
>>>>>>                s = replace(s, "/", envData.sep);
>>>>>>
>>>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>>>> (isDynamicArray!(R1)&&    isForwardRange!(R2)&&    isForwardRange!(R3)) does not
>>>>>> match any function template declaration
>>>>>> d_do_test.d(132): Error: template std.array.replace(R1,R2,R3) if
>>>>>> (isDynamicArray!(R1)&&    isForwardRange!(R2)&&    isForwardRange!(R3)) cannot
>>>>>> deduce template function from argument types
>>>>>> !()(string,string,const(immutable(char)[]))
>>>>>>
>>>>>> I tried changing it to: replaceInPlace(s, "/", envData.sep); with no
>>>>>> improvement.
>>>>>>
>>>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>>>> (isDynamicArray!(Range)&&    is(ElementType!(Range) : T)) does not match any
>>>>>> function template declaration
>>>>>> d_do_test.d(132): Error: template std.array.replaceInPlace(T,Range) if
>>>>>> (isDynamicArray!(Range)&&    is(ElementType!(Range) : T)) cannot deduce
>>>>>> template
>>>>>> function from argument types !()(string,string,const(immutable(char)[]))
>>>>>>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos