digitalmars.D.learn - How use Predicate (alias pred = "a*b")?
- Marcone (11/11) May 13 2021 import std;
- Adam D. Ruppe (6/9) May 13 2021 First, you really shouldn't use these at all. instead of a
import std; template foo(alias pred = "a*b"){ void foo(int x, int y){ writeln(x.unaryFun!pred); } } void main(){ foo(5, 4); } "a" works, but "b" not work. I get this error: Error: undefined identifier `b`
May 13 2021
On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:template foo(alias pred = "a*b"){ void foo(int x, int y){ writeln(x.unaryFun!pred);First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
May 13 2021
On Thursday, 13 May 2021 at 21:38:25 UTC, Adam D. Ruppe wrote:On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:This is just a simple example of how it works. I won't use it. However, I believe it will be very useful for meta programming.template foo(alias pred = "a*b"){ void foo(int x, int y){ writeln(x.unaryFun!pred);First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
May 13 2021
On Thursday, 13 May 2021 at 21:38:25 UTC, Adam D. Ruppe wrote:On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:Thank you. binaryFun solved the problem.template foo(alias pred = "a*b"){ void foo(int x, int y){ writeln(x.unaryFun!pred);First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
May 13 2021