All languages have the potential for nesting nightmares. For example, many of Java's come from the standard libraries. It has to be said, whoever designed the Swing library needs to be beaten over the head with a book on Fluent Design and a pamphlet explaining the Law of Demeter...because that library fails at both.
C++ can enter dereferencing hell if you aren't careful. But like I said, if you break it down into separate declarations it's usually fairly readable. typedef and auto are your friends.
Heck, the lack of type deduction often means code is littered with useful information you don't need to process, wasting "brain-cycles", which is a major problem of older languages like pre-C++11 code and Java and a lesson pretty much all modern languages have learnt.
You could just give me Java but with support for the "var" keyword from C# and I'd immediately call it a vastly improved language. It's more or less what won me over to the "Scala is amazing!" crowd. Well, that and the functional programming...support for constants and encouraging the usage of them, a good futures library, closure support, linq-style chaining of operations on a collection...okay, there's a lot of reasons.
As an aside, and because I'm ranting to put off university documentation work, can visual studio and g++ hurry up with the C++14 support? I want me auto parameter in lambdas...imagine the possibilities, especially when combined with
Linq for C++:
using namespace cpplinq;
from(std::initializer_list<int>({1,2,3,12,56,124,1,8})
>> where([](auto x) { return x > 14; }
>> select([](auto x) { return x + 90; })
>> for_each([](auto x) { std::cout << x << std::endl; });