Calling template member function?
Andrey Zherikov
andrey.zherikov at gmail.com
Wed Apr 20 00:44:11 UTC 2022
On Tuesday, 19 April 2022 at 20:29:01 UTC, Steven Schveighoffer
wrote:
> You can work around the dual context, if you are OK with
> passing the second context explicitly.
>
> The easiest way is to move the member function to a UFCS
> function. an example:
>
> ```d
> struct X
> {
> int x;
> void applyToX(alias fn)() {fn(x);}
> }
>
> void applyToX_alt(alias fn)(ref X xval) {
> fn(xval.x);
> }
>
> void main()
> {
> auto s = X(5);
> int y = 6;
> void fn(ref int x) { x += y; }
> s.applyToX!fn; // error, dual context needed
> s.applyToX_alt!fn; // fine, only single context needed
> }
> ```
I used struct to understand the problem. I don't actually have an
object context to pass like in your example, the only context I
have is template parameters.
More information about the Digitalmars-d-learn
mailing list