Module function conflicting with reserve function
    Stanislav Blinov 
    stanislav.blinov at gmail.com
       
    Tue Nov  6 21:03:01 UTC 2018
    
    
  
On Tuesday, 6 November 2018 at 20:40:11 UTC, Peter Campbell wrote:
> Hi there. I've been playing with D and have encountered this 
> really awkward behaviour. Basically I'm getting a compiler 
> error inside a function I wrote in my module as it thinks I'm 
> trying to call itself with invalid parameters, when actually I 
> want it to call the reserve function on the array itself. Is 
> this a bug or expected behaviour? It seems quite strange and 
> potentially annoying to me.
It's not a bug, just the way name resolution works. Better have 
collision than silent overloads. Possible solutions:
```
void reserve(ref Bob system, in size_t capacity) {
      // explicitly disambiguate
      object.reserve(system._data, capacity);
}
```
or:
// pull in the runtime 'reserve' into this module's scope
alias reserve = object.reserve;
void reserve(ref Bob system, in size_t capacity) {
      // call reserve as usual
      system._data.reserve(capacity);
}
    
    
More information about the Digitalmars-d-learn
mailing list