how to get enclosing function as symbol ? (eg: __function__.stringof ==__FUNCTION__)

Kapps opantm2+spam at gmail.com
Sat Aug 17 20:08:41 PDT 2013


On Sunday, 18 August 2013 at 01:52:50 UTC, Timothee Cour wrote:
> Is there any way to get the enclosing function as symbol ?
>
> I'd like something like that:
> alternative names would be:
> __function__
> __context__
>
> ----
> auto fun(alias caller=__function__)(){
>   //caller represents fun1!double
>   return ReturnType!caller.init;
> }
>
> T fun1(T)(T x){
>   assert(__function__.stringof==__FUNCTION__);
>   alias fun=__function__;
>   assert( is(ReturnType! __function__) == T);
>   return fun();
> }
> void main(){fun1!double();}
> ----


I don't think you can pass it in to the function, but you can use 
__traits(parent) on a variable within the function to get the 
function.


More information about the Digitalmars-d-learn mailing list