Fallback 'catch-all' template functions

Manu via Digitalmars-d digitalmars-d at puremagic.com
Fri Sep 2 22:29:12 PDT 2016


On 3 September 2016 at 11:38, Andrei Alexandrescu via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On 9/3/16 2:41 AM, Manu via Digitalmars-d wrote:
>>
>> On 3 September 2016 at 00:18, Xinok via Digitalmars-d
>> <digitalmars-d at puremagic.com> wrote:
>>>
>>>
>>> In the past, I have suggested using the "default" keyword to specify a
>>> fallback function of this kind. I think it's a useful pattern for generic
>>> algorithms that have optimized variants on specific types for
>>> performance.
>>>
>>>    void f(T)(T t) if(isSomething!T) {}
>>>    void f(T)(T t) if(isSomethingElse!T) {}
>>>    void f(T)(T t) default {}
>>
>>
>> It's an interesting idea... flesh out a DIP?
>
>
> We're better off without that. -- Andrei

Then we need a decent way to do this.
As I've just expressed in the ADL thread, this whole pattern, which is
alleged as one of D's core offerings; templates + UFCS -> pipeline
programming (or 'component' programming as Walter likes to call it),
is loaded with issues, and other than SFINAE being a pita, and UFCS
coming to C++ 'soon'™, the whole thing is much easier in C++ right
now.



More information about the Digitalmars-d mailing list