On Monday, 17 August 2015 at 17:17:15 UTC, Steven Schveighoffer
wrote:
On 8/17/15 1:00 PM, Idan Arye wrote:
It looks a bit ugly, that the `else` is after a function
declaration
instead of directly after the if's "then" clause. How about
doing it
with the full template style?
template replaceInPlace(T, Range)
if(isDynamicArray!Range &&
is(Unqual!(ElementEncodingType!Range) == T) &&
!is(T == const T) &&
!is(T == immutable T))
{
void replaceInPlace(ref T[] array, size_t from,
size_t to,
Range stuff)
{ /* version 1 that tries to write into the array
directly */ }
}
else if(is(typeof(replace(array, from, to, stuff))))
{
void replaceInPlace(ref T[] array, size_t from,
size_t to,
Range stuff)
{ /* version 2, which simply forwards to replace */ }
}
Yes, I like this much better.
-Steve
At that point, couldn't you just use static if inside the body of
the template instead of using template constraints?