struct Foo { int _val; @property int val()() { return _val; } int get() { return val; } // fail } void main() { Foo bar; auto x = bar.val; // ok } Error: cannot implicitly convert expression (val()) of type void to int Note how I can call the property function without errors from outside Foo's methods, however from inside its methods I can't. The *real* issue here is that I can't overload templated and non-templated functions. In my own code I have a templated setter and want to use a non-templated getter. However that can't work right now due to bugs, so I'm forced to make the getter a template by adding an empty set of parens. But as you can see, this introduces yet another new bug. :/
https://github.com/D-Programming-Language/dmd/pull/280
It's absolutely fantastic that this is getting fixed. Major props!
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/1d4438f151143fcdcb807e257959dd1d588f9048 Issue 6738 - Can't call templatized property function from within a struct/class method
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/de89294e9ed1842c9fc36b5ce0d37cfc14952238 revert commit 1d4438f, fix bug 7498, reopen bug 6738
https://github.com/D-Programming-Language/dmd/pull/715
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/63dd3e18b32acaf31da81d91bbb10ea8b2aa0651 Merge pull request #715 from 9rnsr/fix6738 fix issue 6738 revisited