On Sunday, 29 November 2015 at 04:57:28 UTC, Walter Bright wrote:
D does not support C++ semantics. You cannot split namespaces into multiple files in D, nor can you add symbols to an existing namespace. For namespace NS, all the declarations in NS have to be in one file and between the { }, just like any other scope in D.
While I don't disagree with trying to limit how much of C++ gets dragged into D to support linking with C++ code, I don't see how this approach with namespaces is tenable in anything much more complicated than a toy example. C++ namespaces aren't used at all like D modules. Entire libraries are put into a single namespace. For instance, are you suggesting that we put all of the bindings for C++'s standard library in a single file? Large libraries such as Boost or Qt do often split up their namespaces into sub-namespaces, but they're still usually far larger than anyone would want to stick in a single file.
It seems to me that the only way that the current behavior stands any chance of being tenable is if almost no one is using C++ bindings, and when they do, they keep them to an absolute bare minimum. It certainly doesn't fly well with binding something like the STL or Qt.
- Jonathan M Davis
