4 ms·
About C/C++ compilers, mostly. C++ has terrible template and include compilation problems, for historical reasons.
by Animats 2y ago
About C/C++ compilers, mostly.
C++ has terrible template and include compilation problems, for historical reasons.
- baziotis 2y agoYes, but... First, it is what it is. Second, it's not that C++ people made bad decisions in the 80s but the decisions were great afterwards. Let's take C++ metaprogramming in general, which templates are part of. Let's take if constexpr (or static if) as an example, which C++ took straight from Dlang. It is useful for introspection which is almost indispensable for metaprogramming. Walter Bright and Andrei Alexandrescu introduced static if in Dlang early and around 2012, they co-authored a static if proposal for C++ (https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3329.pdf https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n33...). Bjarne Stroustrup, in his infinite wisdom, co-authored a rebuttal that rejected it, only to realize long overdue that it's an incredibly useful feature and introduce it in C++17.
- gpderetta 2y agoIf constexpr and static if have different semantics, specifically if constexpr can't inject names outside it's scope which is what Bjarne was worried about.
- pjmlp 2y agoWhile true, if reflection actually lands, it will bring symbol injection with it.
- pjmlp 2y agoKudos for pointing out D compilers capabilities, I feel it is quite often left out in similar postings. Using import std in VC++ gives me some hopes this will improve, however given the current mess of C++ compilers catching up to recent ISO C++ revisions, we are several years away from this to matter in portable code.