So this is my opinion on the situation. It is long, and you can take it or leave it as you choose. But you specifically asked, and C++ is one of the things I share my opinion on at any opportunity.
Yes, C++11 is still bad, Though it's at least better. I'll give it that much. If you stay in the realm of smart pointers, use std::array and std::vector instead of the raw C types, declare all destructors to be virtual, and avoid template overuse, you're kind of sort of okay. But not really great. Do note that most tutorials do not teach you the C++11 way to do things, mostly because people don't rewrite after they wrote it in 2000 and still get the good Google rankings.
C is simple. C is very simple. Simplicity is the point of C. But this doesn't mean easy. The problem with C is that you can't effectively abstract over anything. You can make some sort of list of ints, but good luck using that code on lists of mobs, at least without going into void pointer land or way overusing the preprocessor. You'll end up coding your own inheritance and basically duplicating huge chunks of what C++ gives you, and you have to manually manage the lifetime of everything without any help whatsoever.
C++ fixes this at a cost. Libaudioverse quite simply wouldn't be possible to write in C, so much so in fact that I actually spent a week rewriting and converting it to C++11. C++ gives you abstraction. But these abstractions are all designed around being efficient and producing code that would be as fast as if you'd hand-written it at the lowest level possible, and lots of them were originally developed in a time when we had so little ram and CPU that compilers could do almost nothing for you. So you end up with the ability to write at a rather high level, believe it or not, but there's a million and one ways to make things fragile, or crash outright, or cause the compiler to give you cryptic error messages that tell you nothing except that there is a problem somewhere. And you sometimes have to hold something like ten times more information in your head as compared to the more "modern" languages. If you avoid most of the features, you can use it like C with classes, and generally that's what I do; I do use templates and stuff, but I think very hard before deciding to do that. Libaudioverse has less than 10 templates, to give you some idea. Templates in C++ are an entire second language that you mix with "normal" C++, in a way, and semantically they're actually closer to Haskell than anything. Most libraries written specifically for a C++ audience love their templates.
This is where I get to confess that I have considered doing games in C++. I've been using it for 3 years now, mostly because I don't have a choice for the projects I want to do, and I know how to steer clear of all the gaping maws to C++ hell at this point. If you know how to steer clear of the gaping maws to C++ hell, it's actually an okay language, and you're right: no one will ever reverse engineer it, though breaking your DRM is still possible. C++ is the language of sighted gaming, and so you can find all sorts of libraries and stuff that cater to C++ first (Box2D comes to mind here, and the fact that it's C++ first is very obvious if you try it in Python). The standard library, what exists of it, is generally very well done. C++11 gives us the next best thing to a garbage collector, and if you bring in Boost you can get cross-platform networking and a bunch of other goodies. Disregarding anything about the language, the one major downside that I keep running into from time to time is the completely abysmal support for unicode, but other than that the gaming landscape is pretty okay. I'll be doing C++ wrappers over the Libaudioverse C API at some point, if only because C++ is the most game-centric language in sighted land. But setting up all these libraries is tricky at best, as you have discovered already.
But this is after 3 years of intense programming in it, I'd still have Libaudioverse in C if it weren't for C++11 because pre-C++11 is not by any stretch of the imagination okay, and honestly I'd have to say that learning C++ to a degree where I think you need to be to get a job in it is probably harder than learning to write games in the first place.
The thing about code protection is this. You are not going to do anything at all that I can't get off the internet faster and easier than decompiling and reverse engineering your code for it. Everything you are going to do in your game has been done before. Hundreds or thousands of times. Your network protocol can be cracked even in C++, just by getting some packet sniffing software. Your DRM can be cracked by someone determined, as all they have to do is patch your DRM's assembly to return true when it's asked if it can be authorized. I have a friend who can do that in minutes, and I could learn to do it in a Saturday if I had the urge. Encryption keys can still be extracted; people have written utilities for this, most notably strings on Linux. You will end up integrating a scripting language for anything not completely trivial, as the change-compile-run cycle is slow and inefficient and horrible, so you're still going to be open to modding from that direction. No one in this community is doing anything that's actually worth some sort of patent, or that a halfway decent programmer couldn't figure out in a few minutes of thought. SO unless you already know it well, you gain almost nothing from C++.
If not being decompiled is really important to you anyway, look at rust or go. These are the newest up-and-coming languages down near the level of C++, and I've heard good things about both. They are both accessible in terms of IDEs (because they don't have or require any), both come with tooling that's easier than CMake, etc. I know for a fact that Go at least has OpenAL bindings, though I have no idea how hard they are to set up. Rust is very different from every other language you have ever seen, but possibly in a good way, and I've been considering it for a possible project for a while now. C# is okay if you can use VS or are willing to live without a debugger. Java is horrible because you now need everyone to have a 200 MB runtime. Python is of course something I recommend, though these days I think that if your project is over 10000 lines or so then you might want to consider a compiled, statically typed language, just to avoid stupid typoing and such.
But I do agree with the learning motivation. If you manage to come out the other side of C++, you've got a lot of stuff going for you. Most usefully is a good appreciation of the machine itself, probably including understanding of things like cache friendliness and maybe SSE and all sorts of stuff that's usually just hidden away. There's also a lot of good money in terms of jobs if you know C++: many people nowadays aren't learning it anymore, and it's super important because we've got literally billions of lines of production code written in it. Unlike other languages, C++ is such that a good programmer can write good code, but a bad programmer can write code that's so bad it's beyond belief; nothing protects the bad programmer from himself, or you from him for that matter. And you won't find out that he shot you all for, say, 2 months when you find out that he forgot to add a 1 to that pointer, and the OS just happened to put you somewhere where you didn't segfault and now you're crashing on half of the machines you run on and have to spend a day auditing every line to find out where and who screwed up. I've done this to myself at least twice, and I'd say I'm at least decent at this point. So in my opinion at least, given that most programmers who have jobs never cross the line past okay programmer, an actually good C++ programmer is probably worth a whole lot of money. So for motivations like that, it may actually be a really good choice, if you can handle it. But I think the really important thing here is to be willing to back out and try another language if you can't, because not being able to handle C++ is in no way the fault of the programmer. I don't want to see anyone not programming because they hit the amazingly steep learning cliff of C++ and gave up, which is why i share my opinions at the drop of a hat. Go into it with your eyes open, is all. Most people don't and then get frustrated or end up with crashy, unmaintainable messes or both. I was in the latter group, when I did Camlorn_audio, for the record; this is half the reason it collapsed, OpenAL and OpenALSoft being the other half.
My BlogTwitter: @ajhicks1992