Como se ha dicho otras veces, las mejores de C++11 son evidentes. Tres ejemplos son la facilidad de convertir un entero a cadena en C++, utilizar bucles for basados en rangos o usar expresiones regulares.
Aquí os muestro, mediante un ejemplo, la facilidad con la que en C++11 se manejan los punteros, olvidándote de tener que liberar memoria:
#include <memory> void funcion() { int * p1 = new int; // Método tradicional para asignar memoria /* Código donde se usa el puntero 'p1' */ delete p1; // ¡Recuerda liberar la memoria! std::shared_ptr<int> p2(new int); // Nuevo método para asignar memoria /* Código donde se usa el puntero 'p2' */ // ¡Y olvídate de liberar memoria! } int main() { funcion(); return 0; }
El ejemplo se ha mostrado mediante el puntero inteligente shared_ptr que permite compartir el puntero, si estás seguro que el puntero es único usa unique_ptr.