It won't get you floating point on chips whose default printf() implementation doesn't include floating point... (which is quite a few, since printf needs several rather large and expensive floating point functions, whether you end up printing any floating point numbers or not.)
The Arduino toolchain uses a full C++ compiler
One has to be careful to separate out features of the "language itself" from the the larger ecosystem provided by libraries and operating systems. Some of the features people normally associate with C++ come from outside the compiler itself. The avr-g++ compiler is a "real" C++ compiler, but there is a minimal set of lib-c++ functions, and no "Standard Template Library" at all. (The normal STL makes extensive use of dynamic memory allocation, and we've already talked about why that is "hard" on a system with very limited memory. "Exceptions", another part of C++, frequently require OS and/or hardware support that may not be present on microcontrollers.
This does make it "challenging" to figure out exactly what some particular Arduino does support. ![]()