any way to prevent overriding of .init ?
Jonathan M Davis
jmdavisProg at gmx.com
Mon Jun 13 13:03:28 PDT 2011
On 2011-06-13 12:50, Dmitry Olshansky wrote:
> Right now there are lot of Phobos functionality that fully expects
> A.init to return just that - a default initialized value of type A.
>
> Now consider:
> struct A
> {
> int i;
> void init(int K)
> {
> //blah
> }
> }
>
> Then:
> map!"a.i"([A(1), A(2), A(3)]);
>
> for me explodes with :
> std\algorithm.d(382): Error: function test.A.init (int K) is not
> callable using argument types ()
> std\algorithm.d(382): Error: expected 1 function arguments, not 0
> due to this line in std.algorithm:
> alias typeof(_fun(.ElementType!R.init)) ElementType;
>
> Any way to circumvent this name lookup oddity and get to built-in property?
> If there is, shouldn't we use it throughout Phobos?
>
> The issue is not a theoretical one - it severely limits usability of my
> pull request (not posted because of this) that makes dirEntries return
> proper InputRange of DirEntry . Namely, DirEntry happen to define just
> such a function (init).
If init is causing a problem, get rid of it. It's scheduled for deprecation
anyway, and it arguably never should have been called by anyone other than
std.file in the first place.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list