ImplicitConversionTargets opposite
    Baz via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri May 22 03:36:52 PDT 2015
    
    
  
On Thursday, 21 May 2015 at 21:49:55 UTC, Freddy wrote:
> std.traits has ImplicitConversionTargets.
> Is there any template that returns the types that can implicty 
> convert to T?
You can write something like this:
---
import std.stdio;
import std.traits;
import std.typetuple;
void main(string[] args)
{
     template PossibleType(From)
     {
         private alias All = 
TypeTuple!(byte,ubyte,short,ushort,int,uint);
         private alias Convertible(To) = 
isImplicitlyConvertible!(From,To);
         public alias PossibleType = Filter!(Convertible, All);
     }
     writeln((PossibleType!int).stringof);
     writeln((PossibleType!short).stringof);
}
---
which outputs:
---
(int, uint)
(short, ushort, int, uint)
---
The idea is to reduce the list of all the possible types. It's 
easy because the high-order functional functions are implemented 
for the type list.
`All` could be a template parameter, and more filled, but to keep 
the example simple here it's not.
    
    
More information about the Digitalmars-d-learn
mailing list