4 ms·
Modules seem to be sidestepped. I wonder why is that, they would make the languages so much easier to work with. One reason is that they might involve a big ove
by jokoon 9y ago
Modules seem to be sidestepped. I wonder why is that, they would make the languages so much easier to work with. One reason is that they might involve a big overhaul of toolchains, I think...
- ovao 9y agoNot sidestepped, but they're a TS that may (should, I think?) be folded in C++20 once there's a consensus. There are a couple nice implementations already, so I'd expect no problem with a modules proposal making the cut for the next standard.
- jokoon 9y agoI wish microsoft could just implement a temporary/beta version just to let developers try it out.
- plorkyeran 9y agoThey did, and they shipped it in VS2017.
- plorkyeran 9y agoEr, they submitted the TS to ISO for inclusion in the standard ("The Modules TS is sent out for its comment and approval (PDTS) ballot."). That's the final step from the committee for including it in C++20.
- BudVVeezer 9y agoNot quite. It was submitted for PDTS (proposed draft technical standard), which means it goes out for balloting to ISO national bodies. That balloting either succeeds (at which point you have a Techincal Specification) or it comes back to the committee with comments that the committee then has to respond to (and then another round of balloting happens). Once it's accepted as a Technical Specification, it's still not part of the C++ International Standard. That's a decision the committee comes to at their own pace, much like what happened at this meeting where the Concepts TS was accepted (as amended) into the IS. Think of a TS somewhat like a beta. There's no assurance that the contents of the TS will go into the IS at all or in the exact form it was originally specified in, but that's certainly the hope when the TS is published.
- pjmlp 9y agoOne reason is that Google and other members that agree with their position, want to be able to export macros from modules, instead of using the multiple file approach, meaning #include for macros and modules for everything else. A simple solution is already possible with Microsoft's implementation, but they don't like it, it seems. #ifndef LEGACY_HEADER #define LEGACY_HEADER #include "legacy_header_macros.h" import new_header_module; #endif Right now there isn't much public information how they will sort this out.
- boris 9y agoIMO, it's more important what's happening on the ground, that is, in the compilers, than the "official" status in the standardization pipeline. After all, we've had export in the standard and we all know where it went (in case you don't: nobody implemented it). And on the ground things are looking pretty good: the big three (GCC, Clang, and VC) have modules supported to various degrees and are actively working on improving things.