www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - anonymous template predicates

reply "Vlad Levenfeld" <vlevenfeld gmail.com> writes:
I was wondering if there's a mechanism to make anonymous 
templates, e.g.

given:
   enum Policy {A, B}
   alias List = TypeTuple!(...);

instead of this:

   enum has_policy_A (T) = T.policy == Policy.A;
   alias Result = Filter!(has_policy_A, List);

use something like this:

   Filter!(T => T.policy == Policy.A, List);

I've tried templates that generate eponymous predicates from 
mixed-in strings but these have a number of caveats that limit 
their usability.
Apr 30 2015
parent "Idan Arye" <GenericNPC gmail.com> writes:
On Thursday, 30 April 2015 at 21:01:36 UTC, Vlad Levenfeld wrote:
 I was wondering if there's a mechanism to make anonymous 
 templates, e.g.

 given:
   enum Policy {A, B}
   alias List = TypeTuple!(...);

 instead of this:

   enum has_policy_A (T) = T.policy == Policy.A;
   alias Result = Filter!(has_policy_A, List);

 use something like this:

   Filter!(T => T.policy == Policy.A, List);

 I've tried templates that generate eponymous predicates from 
 mixed-in strings but these have a number of caveats that limit 
 their usability.
The syntax is a bit ugly, but it can be done: http://dpaste.dzfl.pl/d17912ccdeb9
Apr 30 2015