On Wednesday, 19 July 2017 at 15:28:50 UTC, Steven Schveighoffer wrote:
On 7/19/17 8:16 AM, Petar Kirov [ZombineDev] wrote:
On Wednesday, 19 July 2017 at 12:11:38 UTC, John Burton wrote:
On Wednesday, 19 July 2017 at 12:05:09 UTC, Kagamin wrote:
Try a newer compiler, this was fixed recently.

Hmm it turns out this machine has 2.0.65 on which is fairly ancient. I'd not realized this machine had not been updated.

Sorry for wasting everyones' time if that's so, and thanks for the help.

Just for the record, private is the analog of C's static. All private free and member functions are callable only from the module they are defined in. This is in contrast with C++, Java, C# where private members are visible only the class they are defined in.

I'm not so sure of that. Private functions still generate symbols. I think in C, there is no symbol (at least in the object file) for static functions or variables.

You could still call a private function in a D module via the mangled name I believe.

-Steve

Note: not 100% sure of all this, but this is always the way I've looked at it.

You're probably right about the current implementation, but I was talking about the intended semantics. I believe that with DIP45, only functions and global variables annotated with the export storage class would necessary have externally visible symbols.

Also, consider this enhancement request (which I think Walter and Andrei approve of) - https://issues.dlang.org/show_bug.cgi?id=13567 - which would be doable only if private functions don't have externally visible symbols.

See also: https://issues.dlang.org/show_bug.cgi?id=9893.

Reply via email to