On 23/02/2018 1:54 PM, Timothee Cour wrote:
in example below, how do I propagate RET (or even `typeof(a)`) to the
result value of `inferType`?

does this need a language change to allow this?


```
template inference(alias emitter) {
   auto inference(){
     auto inferType(){
       emitter!((a){
         enum RET=typeof(a).stringof; // type is known here, how to propagate?
         pragma(msg, RET);  // string
         }) ();
       return "unknown";
     }
     // how to get RET? (or even typeof(a) )
     enum temp=inferType;
     pragma(msg, temp);
   }
}

void main(){
   static void fun(alias put)(){
     put("hello");
   }
   inference!fun;
}
```

use case: allow type inference in `emit`

https://github.com/timotheecour/dtools/blob/master/dtools/util/emit.d
(see forum discussion here:
https://forum.dlang.org/post/mailman.538.1458560190.26339.digitalmar...@puremagic.com)>

Yeah I've tried, I can't think of any way to do this.

Reply via email to