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

Reply via email to