In my view,
(1) the "flavors" of the core language (listed by you);
(2) the libraries/"frameworks" used (Qt vs. STL vs. Boost vs. ...) (also listed by you); and
(3) the paradigm/style (OO vs functional vs generic meta-programming)
generate a 3-dimensional space of ways of coding that are compatible with one another.
It's almost impossible to use multiple libraries together without wrapping everything in one's own "house" style as a consequence.
In contrast, languages like Java and Rust, for example, have one single standard way of doing things that 99% of people just follow.
It's almost impossible to use multiple libraries together without wrapping everything in one's own "house" style as a consequence.
In contrast, languages like Java and Rust, for example, have one single standard way of doing things that 99% of people just follow.