+ 1
Good question. I personally would like to see a technical answer if anyone has one.
I view it as a middle ground. Assembler is a low level language, just above binary. You have to do everything, basic functionality and arithmetic has to be taught for each program and allocations were based on address and not the symbolic representation of the address. Higher level languages offer that as part of the language, with standard assembler code for each bit of functionality we're used to having in higher level languages. So you have prebuilt code allowing you to do seemingly simple tasks so that you can focus on what you actually want to do.
Other languages do this using different programming languages. Python is an example. It uses C primarily as its underlying language, offering a library of standard C code to get "seemingly simple" tasks done as part of the code so you can focus on what you're actually trying to do, but in doing so cuts off some lower level functionality C has with/to assembler.
So where is C++? I dont know. It depends on the standard technical definition of high and low level programming languages. What a "high" level language must include and disclude and likewise for the "low" level language.



