digitalmars.D.learn - Template variable not reach at compile
- Greatsam4sure (10/10) Jul 21 2018 Sorry for the typo. This is the problem
- Mike Parker (10/20) Jul 21 2018 You aren't using a or b at compile time -- you're using the
- Greatsam4sure (6/30) Jul 21 2018 Thanks Sir. Really appreciate your reply it works for me. I also
Sorry for the typo. This is the problem auto arithmetic(T, V, U)(T a, V b, U op){ return mixin("a"~op~"b"); } //call like this arithmetic(1.5,2.5,"+"); Compiler says the variable op is not reach at compile time. So how can the varible a and b be reach at compile time and op is not reach. I will appreciate any help. I have also use a static if but the same complain. Just a newbie in D
Jul 21 2018
On Saturday, 21 July 2018 at 12:17:54 UTC, Greatsam4sure wrote:Sorry for the typo. This is the problem auto arithmetic(T, V, U)(T a, V b, U op){ return mixin("a"~op~"b"); } //call like this arithmetic(1.5,2.5,"+"); Compiler says the variable op is not reach at compile time. So how can the varible a and b be reach at compile time and op is not reach. I will appreciate any help. I have also use a static if but the same complain. Just a newbie in DYou aren't using a or b at compile time -- you're using the string literals "a" and "b", which have nothing at all to do with a and b. In order to get what you want, you need to make op a template parameter like this: auto arithmetic(string op, T, V)(T a, V b) { mixin("a"~op~"b"); } arithmetic!("+")(1.5, 2.5);
Jul 21 2018
On Saturday, 21 July 2018 at 13:13:11 UTC, Mike Parker wrote:On Saturday, 21 July 2018 at 12:17:54 UTC, Greatsam4sure wrote:Thanks Sir. Really appreciate your reply it works for me. I also want to thank you for all your labour in the dlang ecosystem or foundation. I read about the dlang announce group every day. I will also want update to dlang this week or close it down or redirect to the announce group directlySorry for the typo. This is the problem auto arithmetic(T, V, U)(T a, V b, U op){ return mixin("a"~op~"b"); } //call like this arithmetic(1.5,2.5,"+"); Compiler says the variable op is not reach at compile time. So how can the varible a and b be reach at compile time and op is not reach. I will appreciate any help. I have also use a static if but the same complain. Just a newbie in DYou aren't using a or b at compile time -- you're using the string literals "a" and "b", which have nothing at all to do with a and b. In order to get what you want, you need to make op a template parameter like this: auto arithmetic(string op, T, V)(T a, V b) { mixin("a"~op~"b"); } arithmetic!("+")(1.5, 2.5);
Jul 21 2018