digitalmars.D.learn - Cannot use local 'i' as parameter to non-global template
- maik klein (25/25) Nov 07 2015 template IsSame(T){
- Nicholas Wilson (12/38) Nov 08 2015 Two ways to go about doing this
template IsSame(T){ template As(alias t){ enum As = is(T : typeof(t)); } } void main() { int i; enum b = IsSame!int.As!(i); } Err: Error: template instance As!(i) cannot use local 'i' as parameter to non-global template As(alias t) dmd failed with exit code 1 I don't understand the error message. I also tried template IsSame(T){ enum As(alias t) = is(T : typeof(t)); } Which results in Error: template app.IsSame!int.As cannot deduce function from argument types !()(int), candidates are: source/app.d(50,8): app.IsSame!int.As(alias t) What am I doing wrong? Ps: Also posted on SO https://stackoverflow.com/questions/33584130/cannot-use-local-i-as-parameter-to non-global-template not sure where people usually ask questions about D.
Nov 07 2015
On Saturday, 7 November 2015 at 15:04:41 UTC, maik klein wrote:template IsSame(T){ template As(alias t){ enum As = is(T : typeof(t)); } } void main() { int i; enum b = IsSame!int.As!(i); } Err: Error: template instance As!(i) cannot use local 'i' as parameter to non-global template As(alias t) dmd failed with exit code 1 I don't understand the error message. I also tried template IsSame(T){ enum As(alias t) = is(T : typeof(t)); } Which results in Error: template app.IsSame!int.As cannot deduce function from argument types !()(int), candidates are: source/app.d(50,8): app.IsSame!int.As(alias t) What am I doing wrong? Ps: Also posted on SO https://stackoverflow.com/questions/33584130/cannot-use-local-i-as-parameter-to non-global-template not sure where people usually ask questions about D.Two ways to go about doing this template IsSame(T,U) { enum IsSame = is(T : U) } or make i a "global" by using a template alias Identity(T) = T; template IsSame(T){ enum As(alias t) = is(T : typeof(t)); } enum b = IsSame!int.As!Identity!(i);
Nov 08 2015