ReturnType and Parameters of Templated function/method

Patric Dexheimer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 13 13:52:09 PDT 2016


On Thursday, 13 October 2016 at 18:01:25 UTC, Ali Çehreli wrote:
> On 10/13/2016 07:19 AM, Patric Dexheimer wrote:
>> There is a way to capture the return type/parameters of a 
>> templated
>> function like:
>>
>> void add(T)(T t){}
>> Parameters!add;
>>
>> Yes, i know that the template don´t have any type until 
>> explicitly coded
>> like:
>> Parameters!(add!int);
>>
>> Or another solution like getting the string function 
>> declaration will be
>> enough:
>> "void add(T)(T t)"
>>
>> Like what happens with:
>>
>> void other_add(int x){}
>> writeln( typeof(__traits(getMember, Module, 
>> "other_add")).stringof );
>> //output: void(int x)
>
> There are several related options in std.traits. What exactly 
> are you trying to achieve? Perhaps there is a better way.
>
> Ali

I´m working on a Lua binding for D.
One of my ideas is to try to make automatic binding for structs, 
even if some method have templated arguments. My idea is to at 
least try to bind templated functions with basic types 
automatically (in the example, bind then add!int,  add!float, 
add!string etc..)

I tried arity!add which should resolve my problem too, but did´nt 
compile too.

So for now my idea is to brute force the numbers of arguments 
with 'compiles' trait or trying to get the sourcecode somehow.





More information about the Digitalmars-d-learn mailing list