Includes of SHELLmain are including like ALL the STL headers

Reporter: JoshDreamland  |  Status: open  |  Last Modified: May 03, 2017, 04:11:17 PM
A million years ago, for reasons of parse efficiency, I told people not to include STL containers (other than string) from SHELLmain. Fast forward to 2017, where I cannot name an STL container or adapter that is not included from SHELLmain.

This is tickling all sorts of issues with running JDI on GNUC++17 code.

Facing facts, JDI needs to be updated or replaced, moving forward. I am in favor of replacing it, on the grounds that, while Clang has not gotten any smaller over the years, the internet, users' bandwidth, and users' expected development platform size have gotten much, much bigger. A 300MB libclang dependency is no longer anything to be grumpy about (and we already had a 300MB compiler dependency on Windows, anyway).

In the meantime, JDI can't handle the weird-ass variadic templates and hoo-hah going on these new headers (it's largely #ifdef'd out, but additions to GNUC are probably screwing us, as well).

That being the case, we need to stop including these containers from the main source file, until JDI is solved. This will allow the string workaround to work more effectively, which is biting a lot of people, lately.

I suspect that this is, indirectly, what's causing #1006 (at very least for TKG).

I am filing a bug for this because literally anyone can go through and remove references to STL containers (eg, std::map) from the main headers (moving them into internal headers used only by actual implementations). This isn't something I feel like doing, so I'm not going to jump to it. I'd probably sooner solve JDI.

Please sign in to post comments, or you can view this issue on GitHub.