"else if" for template constraints

Zoadian via Digitalmars-d digitalmars-d at puremagic.com
Mon Aug 17 09:57:31 PDT 2015


On Monday, 17 August 2015 at 13:18:43 UTC, Steven Schveighoffer 
wrote:
> void replaceInPlace(T, Range)(ref T[] array, size_t from, 
> size_t to, Range stuff)
> if(isDynamicArray!Range &&
>     is(Unqual!(ElementEncodingType!Range) == T) &&
>     !is(T == const T) &&
>     !is(T == immutable T))
> { /* version 1 that tries to write into the array directly */ }
>
> void replaceInPlace(T, Range)(ref T[] array, size_t from, 
> size_t to,
> Range stuff)
> else if(is(typeof(replace(array, from, to, stuff))))
> { /* version 2, which simply forwards to replace */ }
>
> looks much better IMO. Can we do something like this? I'm not a 
> compiler guru, so I defer to you experts out there.
>
> -Steve

wouldn't is(typeof(replace(array, from, to, stuff))) better be a 
static if inside the first version?


More information about the Digitalmars-d mailing list