On Wednesday, 14 December 2016 at 01:39:01 UTC, Andrei
Alexandrescu wrote:
I prefer the current form of the proposal:
bool equal(R1, R2)
import (std.range)
if (isInputRange!R1 && isInputRange!R2)
{ ... }
I didn't see an example of the syntax when multiple imports are
involved (apologies if I missed it). Would be good to spell it
out. For example, the start to uninitializedArray (array.d):
auto uninitializedArray(T, I...)(I sizes) nothrow @system
if (isDynamicArray!T && allSatisfy!(isIntegral, I) &&
hasIndirections!(ElementEncodingType!T))
{
This uses imports from std.traits, std.meta, and std.range. Would
there be one import statement or three? I'm guessing so the
intent is one, so perhaps:
auto uninitializedArray(T, I...)(I sizes) nothrow @system
import (std.traits; std.meta; std.range)
if (isDynamicArray!T && allSatisfy!(isIntegral, I) &&
hasIndirections!(ElementEncodingType!T))
{
Is that the idea? Similarly for importing individual symbols. In
the above case:
auto uninitializedArray(T, I...)(I sizes) nothrow @system
import (std.traits : hasIndirections, isDynamicArray,
isIntegral;
std.meta : allSatisfy;
std.range : ElementEncodingType)
if (isDynamicArray!T && allSatisfy!(isIntegral, I) &&
hasIndirections!(ElementEncodingType!T))
{
--Jon