October 30, 2019 Bug or Feature: `this` necessary to call function with template this parameter | ||||
---|---|---|---|---|
| ||||
struct Example { private void helper(int i, this X)() { } void funcTempl(T, this X)(T value) { this.helper!0(); // ^^^^^ Why do I need this? } } void main() { auto ex = Example(); ex.funcTempl(1); } The question is in the comment in the code. Is that intentional or a bug? |
October 30, 2019 Re: Bug or Feature: `this` necessary to call function with template this parameter | ||||
---|---|---|---|---|
| ||||
Posted in reply to Q. Schroll | On Wednesday, 30 October 2019 at 20:22:25 UTC, Q. Schroll wrote: > struct Example > { > private void helper(int i, this X)() { } > void funcTempl(T, this X)(T value) > { > this.helper!0(); > // ^^^^^ Why do I need this? > } > } > > void main() > { > auto ex = Example(); > ex.funcTempl(1); > } > > The question is in the comment in the code. Is that intentional or a bug? It's a bug - filed as https://issues.dlang.org/show_bug.cgi?id=20341. However, note that typeof(this) inside funcTempl() is different from X, so that inside helper(), X will not be the same as in funcTempl(). To fix this, you will need to pass X on to helper as helper!(0, X). When you do this, you no longer need 'this.' in front of the instantiation. -- Simen |
Copyright © 1999-2021 by the D Language Foundation