DIP10005: Dependency-Carrying Declarations is now available for community feedback

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Wed Dec 14 14:56:54 PST 2016


On 12/14/2016 04:47 PM, ArturG wrote:
> On Wednesday, 14 December 2016 at 19:39:55 UTC, Andrei Alexandrescu wrote:
>> On 12/14/2016 02:04 PM, Meta wrote:
>>> On Wednesday, 14 December 2016 at 17:32:10 UTC, H. S. Teoh wrote:
>>>> What about:
>>>>
>>>>     /* Showing full declaration just for context */
>>>>     bool myFunc(R1, R2)(R1 r1, R2 r2)
>>>>     import {
>>>>         std.range : isInputRange,
>>>>         std.traits : isNum = isNumeric
>>>>     }
>>>>     if (isInputRange!R1 && isInputRange!R2 &&
>>>>         isNum!(ElementType!R1))
>>>>     in { assert(someCondition!R1); }
>>>>     out(result) { assert(result == expectedResult(...)); }
>>>>     body
>>>>     {
>>>>         ...
>>>>     }
>>>>
>
> as ketmar said, would the import block have any restrictions what code
> could be used inside, would this work?
>
> T1 fun(T1, T2)(T1 t1, T2 t2)
> import
> {
>     version(A) { someMod: T1, T2; }
>     else { someOtherMod: T1, T2; }
>
>     // static if or any other code?
> }
> {
>     T1 ret = t1 + t2;
>     return ret;
> }

The acceptability of the proposal decays exponentially with its 
deviation from existing import syntax. -- Andrei



More information about the Digitalmars-d mailing list