Az auto_ptr valódi unikum volt az STL template-ek között, hiszen senki mással nem volt hajlandó együttműködni. Funkciója az volt, hogy bele lehessen rakni egy pointert, és ő meghívja a delete-et rá, ha meghívódik a saját destruktora. Ezért aztán copy-funkciót nem raktak bele, csak move-ot, mivel ha két auto_ptr-ben is szerepelne ugyanaz a pointer, akkor azt duplán törölnék. A heapen tárolt objektum lemásolása pedig elütött a szerepétől. Így úgy gondolták, a move-szemantikát, lévén, hogy akkor még nem létezett rvalue referencia, a copy construktorral és a copy assignment operátorral oldják meg. Ez azonban azt eredményezte, hogy ha berakták egy vectorba, akkor a vector újrafoglalása rendben működött, de egy másik vectorba már nem lehetett áttölteni. Emiatt letiltották a használatát a konténerekben. Viszont továbbra is remekül lehetett használni lokális változókban RAII-nak, és biztonságos pointereknek tagváltozókba.
Most viszont már meg lehet különböztetni a copy és a move szemantikát az rvalue referenciák segítségével. Ezért hozták létre a unique_ptr-t, ami átveszi a szerepét. Sajnos az auto_ptr-t nem lehetett kijavítani, mert az a copy konstruktorban és a copy assignment operátorban végezte a move-szemantikáját, és ha ezt átírják move konstruktorra és move assignment operátorra, akkor sok program nem futna többé. A unique_ptr nem tud másolódni, viszont move-olódni igen. Ezért ha berakjuk a vectorba, és azt megpróbáljuk lemásolni egy másik vectorba, kapunk egy hosszú és érthetetlen hibaüzenetet, melynek lényege, hogy pár függvény implementációja hiányzik a template-ből. Viszont ha nem akarjuk másolni, egy vectoron belül jól megvan. A helyes használata egy vectorral így néz ki:
for (int i = 0; i < 10000; ++i)
Figyeljünk arra, hogy a move függvényt itt is használnunk kell, mert egyébként nem tudná, hogy move-olni akarjuk, és hibaüzenetet adna.
{
unique_ptr<Obj> o(new Obj());
v.push_back(move(o));
}
Így a unique_ptr lett az új auto_ptr, annyira, hogy az auto_ptr-t deprecateddé tették. Vagyis a jövőben célszerű lesz átírni régebbi kódjainkban is az auto_ptr-unique_ptr-re.