ADL

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sun Sep 4 13:17:25 PDT 2016


On 9/4/2016 5:31 AM, Andrei Alexandrescu wrote:
> On 9/4/16 3:26 AM, Walter Bright wrote:
>> On 9/3/2016 4:46 PM, Andrei Alexandrescu wrote:
>>> On 9/4/16 12:28 AM, Walter Bright wrote:
>>>> On 9/3/2016 1:43 PM, Andrei Alexandrescu wrote:
>>>>> On 9/3/16 10:43 PM, Walter Bright wrote:
>>>>>> On 9/3/2016 8:34 AM, Manu via Digitalmars-d wrote:
>>>>>>> And if either module doesn't have an instance of func?
>>>>>>
>>>>>> static if (traits(compiles, ModuleOf!T.func))
>>>>>>     alias func = ModuleOf!T.func;
>>>>>
>>>>> What's an elegant way to encapsulate this as a stutter-free one-liner?
>>>>> -- Andrei
>>>>
>>>> using a template and mixing it in
>>>
>>> "Show me the mo^H^Hcode."
>>
>> template foo(T)
>> {
>>     static if (traits(compiles, ModuleOf!T.func))
>>         foo = "alias func = " ~ ModuleOf!T.func ~ ";";
>>     else
>>     foo = "";
>> }
>>
>> mixin(foo!T);
>
> Actually "func" i.e. the function's name must be a paraneter. No? -- Andrei

Probably. The point is, the tools to do this are available features of D.


More information about the Digitalmars-d mailing list