|
|
|
|
|
by Const-me
2517 days ago
|
|
> giving up on many desirable features of software projects Some C++ libraries are header only because they were designed for highest performance possible. Classic example is std::sort versus qsort, C++ usually wins because inlining. My favorite example is Eigen, they use template metaprogramming to save RAM traffic. When you write x=a+b+c for matrices or vectors, the library doesn't compute a+b intermediate vector. That C++ expression returns a placeholder object of a weird type, CPU computes a+b+c in a single loop over them, reading a,b,c, and writing to x. |
|
For instance, on some platforms system headers use preprocessor variables called "major" and "minor". If your code is in source files, you have strong control over whether you care. If your code is all in headers, your don't since all your code is affected by unrelated textual inclusions.