In my oppinion (but i'm not speaking out of experience with C++ in AVR) it's dangerous to use C++ for uC's. I guess the biggest problem is Memory allocation! You need to keep track of the memory you use since it's probably limited.
I also think code size is a bit bigger (after compilation, perhaps you can write smaller code) but this is an assumption.
I think if you're gonna use operator overloading, templates, streams, Inheritance with virtual functions, ... you have to have a good idea of what your doing. (If there is a C++ compiler for AVR that supports these things) Small memories are probably the biggest enemy of Object Oriented design.
For the moment i try use only a subset of the C standard library for AVR, eg not the scanf or sprintf methods since they increase compiled code size allot (3 to 5 kB)