"You're still a beginner, so don't give advice to a beginner." Now wait a minute. If this is in fact one of the things you're trying to tell me, that's nonsense.
Pull a quote where I said precisely that.
You can't complain about being talked down to and attacked when you go around blowing things out or proportion and misrepsenting what others have said.
You've been doing this for ten years you say? What was C++ like ten years ago? What was it like to be a beginner ten years ago? I dunno. Do you? Do you even remember most of the problems you had, let alone all? I know a lot more about being a beginner than you do. I remember all the things that got in my way, all of the self-started projects I completed or never even got halfway done on. In this department, your ten years work against you.
My own personal experiance in general beginner problems isn't relivent, nor in the area of being a beginnner did I claim that my experiance was. By the time I got to C++ I'd been programming for 10 years, including one assembly language variant and a brief stint in early Java.
However my experiance with C++ gives my view of C++ more weight and my observations over the 10 years of my being on this site give me a pretty good idea of the problems that beginners suffer from in C++ and the problems that come up when they try to deal with it.
You think about all the problems you've had with C++, and most of them might truly be far too advanced for a beginner, but as has been said: That means a beginner probably won't run into them. And if he makes those mistakes, so what? Is it mission critical code?
If the code is mission critical or not is utterly unimportant.
But ok, lets take something which is simple C++; a Standard Container.
Those things can blow up with some of the most god aweful error message you'll ever see.
Yet they are key and central part of the language; somethinig a beginner should be starting with from practically Day 1 (if you are doing strings via char * or dynamic arrays of memory via <type> * then you are Doing It Wrong). Yet these areas can produce some of the most hard to understand and track back error messages out there.
And even if you fall back to doing char * strings or <type>* memory allocation you now run into the world of no bounds checking where you can do as you like and nothing will tell you otherwise until something blows up in your face.
I've seen beginners confused by things relating to 'access violation at address 0x000000c' which I can look at and say 'oh, it's this...' right away but they have no idea about. And yet allocating instances of types and calling functions on them is central to C++ but not for learning to program and can be taughted better in language which tell you via better error messages what has gone wrong. Try missing of a ';' somewhere in a header and watch the explosion of error messages which happen due to one tiny syntax error which has no impact on the ability of someone to learn the basics of programming.
Hell, there was an example recently of someone being confused because they could apprently call a function via a null pointer to a class without things going wrong.
The C++ standard itself is known for using the word 'undefined' or 'implementation defined' through out its language.
None of the things I've mentioned above are 'advanced' and yet I've seen over the years people repeatedly trip up over them and then the resulting cryptic error messages/reactions from the runtime which can come about from it.
Edit: you can also add to that list compile times, header files, pathing issues and libraries.
Again none of those are advanced but being forced to deal with them just to learn is, to use your phrase, 'insane'.
He'll learn the best way to do the things he's been doing later. Just like when you start off writing code like int box1, int box2, etc, and then later you learn "Oh, that's what arrays are for. Bad habit erased."
But it's not just Bad habits like that - C++ carries with it a massive legacy and with it comes 'advice' which might have been important 10 or even 5 years ago but these days is worthless.
New C++ programmers, the ones who seem to defend the language with such tenacity (or ones who only know C++ like it is the only thing worth knowing), are also the biggest source of 'not made here syndrome' - many shunning the standard library as if it is some slow and horrible thing, instead favouring that own bug ridden versions, because they once read somewhere that it was slow. This persists going forwards and instead of taking advantage of tools which exist they go on to try and reinvent everything because they feel somehow they will 'learn more' (also the classic excuse of someone who wants to make a game but believes making an engine first is a good idea).
This is a mind set which is VERY hard to break and one which continues to be recycled from programmer to programmer as someone new starts all the other newbies around them just tell them what they have done themselves.
(I figure it must be some kind of self reinforcement cycle - "if someone else does it then I can't be wrong" but that's far far off topic).
All of the above is why, when compared to other languages, C++ is lacking.
Yes, C++ has it's strengths, one of which is being on all platforms and other of which being if you know what you are doing you can get more out of it than maybe you can in another language HOWEVER those two arguements are utterly moot because they are advanced topics (often requiring knowledge of the target platform and how the code generation can work) and you have already stated that advanced things don't matter to beginners.
When you are starting out getting told what you are doing wrong is more important than speed or frankly other considerations beyond learning the art of programming.
C++ makes this harder than it needs to be.