Well, the compiler is avr-gcc when working with 8 bit AVRs. And there isn't a single "C++", there are various implementations that have developed over time, and versions of the gcc compiler either have no, partial, or full support for a particular standard, that depending on compiler version you can activate with flags to the avr-gcc executable.
C++11 was a big leap from C++98 and C++03 in terms of what sort of structures the compiler can support intrinsically, such as automatic type deduction for dynamic variables i.e. auto foo = 3; //foo is deduced as "int" vs. auto foo = 3.0; //foo is deduced as "double."
The latest version of avr-gcc more-or-less fully supports the core features of C++11 that are intrinsic to the compiler, but the C++11 standard also defines some useful standard library features (some of them inherited from third-party libs like boost.)
The point I was making is that in much of the Arduino code I see users make very little use of modern C++ lang features like allocators, polymorphism/virtualization, and generics via template metaprogramming, maybe with the notion that those features will somehow intrinsically bloat the code/slow execution. And it ends up looking a lot like straight C. IMO these fears are unfounded; the entire goal of the language is to achieve high levels of abstraction and re-usable, generic code with little to no overhead vs. what it would take to create the same functionality using straight C.