Hacker News new | ask | show | jobs
by cout 399 days ago
The limitation with the runtime switch is that it cannot be generated. If all you want to do is have different behavior for each type, then it's probably fine. But if you want to write generic code (apply the same function regardless of type), you need to be able to generate the function using metaprogramming techniques.

C++ isn't great for for metaprogramming, because much of it is a hack that uses the type system to do things it was never originally designed to do (i.e. as a lisp). But as metaprogramming has become more commonplace, the language has evolved with features that make it easier and more readable. It's still all based on a hack, and there's still no good way to debug a metaprogram. But at least I don't have to read the loki book anymore to grok it.

I still prefer to use a proper code generator when I can (it compiles faster, and I can see the generated code). Generating an ordinary switch outside of C++ is certainly an option and is something I've done. But I don't reach for it every time, because those tools tend to be kludgy as well (they can generate invalid C++, which templates and comstexpr cannot).