4 ms·
>Modern C++ codebases — from browsers to GPU frameworks — rely heavily on templates, and that often means massive abstract syntax trees. Symptom of a symptom.
by reactordev 1y ago
>Modern C++ codebases — from browsers to GPU frameworks — rely heavily on templates, and that often means massive abstract syntax trees.
Symptom of a symptom. Templates are abhorrent abominations. However, there’s no way to do generics without them. It just becomes a hairball mess at compile time… kudos for alleviating some of the pain in waiting.
- o11c 1y agoThe C++ implementation, sure. But there is plenty of other implementation space without giving up like Java. With a trait-first implementation that mostly defers monomorphization and prefers "static if" over C++-style specialized implementations, the only hard choice is whether to optimize codegen for size or speed. Trying to retrofit this onto standard C++ is ... not actually as difficult as you might think. The real problem is the implementation of builtins that rely heavily on "this really must be a constant during X phase of compilation".
- throwaway17_17 1y agoIm not sure what the originating symptom is in your comment. I read your comment as saying: ‘requiring generics’ -> C++ Templates -> massive ASTs Is that correct? If so I’d then wonder if the applies from strictly within the bounds of C++ the language. Is there an alternate meaning? I think there are quite a few viable ways to present what are usually called ‘generics’ at several levels of abstraction and in several programming paradigms, so any reading outside of C++ seems strange.