Construct 2 will not teach other programming essentials like double checking syntax obsessively, clean code, and memory management among other things. It is very forgiving in that sense. How much someone relies on behaviors and pre-made examples without attempting to understand how or why certain code works could also limit how much is learned.
I don't really agree with that part.
Syntax and organizing matters in the name of functions you use, the global variables you use, the abstraction making of an array, and most of all the parts a lot of people complain about when dealing with "making big games" with C2.
On that level, no programming languages "teaches" you those concepts either (apart perhaps syntax stuff, although it is often one of the main issue with signs used in ends of lines and stuff like that), it is up to you, the user/progreammer to be organized and make "clean" and elegant code.
You can have messy C++ code as well, using too much memory, not clean/elegant and so on. The language itself doesn't teach you anything about that, it is just your own experience using it that does the trick, same goes with C2.
Also, it's actually an abuse (even on my part) to compare C2 with C++ since C2 is based on JavaScript, as such a lot of your complains/remarks are the same that "true coders" of low-level languages like C++ will have towards scripts/modern languages like JavaScript.
It's kind of a dead debate all along since it is mostly a matter of perception/point of view/comparing two things that are not really comparable (low level vs high level).
Yes it is "forgiving" to a certain point (it was designed to allow "complete noobs" to get in) and for a small project you can use too big textures and ruin your memory, nonetheless, the overview of the manual ends with the best practices recommendations, the performance tips and memory usage tips that talk about memory management.
You don't have to manage memory assignment like you do in C++, but once again, C2 is closer to JavaScript than C++, and in that, JavaScript memory assignment works about the same. Also, game engine. Go use an engine like Unity or UE4, do you have "so much" memory management control as well ?
I'm being picky on words, but when I learned C++ on my own, quite some years ago now, it did not teach me so much fundamentals as well.
I have experienced also the fact of understand better some of the OOP concepts better once I encountered Construct (Classic at the time) and abstract data structures like arrays became clearer to me through the use of Construct as well.
But it is not the goal of a language or of C2 to "teach" anything.
By its design it will lead you in certain ways, sure, but as long as you are left on your own, you can teach yourself bad ways, I don't think it is specific to C2.
Also, where C++ documentation was hectic, and no two tutorials would start at the same point (which was the worst imo), C2 has a clear starting point (the manual and the beginner's guide) and quite clear and available documentation to help you along.