Właśnie kompilowałem swój własny kod z -std=c++0x
flagą w GCC, ponieważ chcę niejasno nadążać za tym, co robią wszyscy młodzi ludzie (pod warunkiem, że pozostaną na moim trawniku), i skończyło się z mnóstwem ostrzeżeń o auto_ptr
byciu przestarzałym. Oczywiście wiedziałem, że auto_ptr
to jest przestarzałe w C ++ 0x, ale ...
Czy amortyzacja nie jest stratą czasu i wysiłku? Powody, dla których nie jest to przestarzałe (na przykład auto_ptr):
istnieje ocean kodu, który wciąż wymaga wsparcia, a miliony ostrzeżeń tylko kuszą ludzi do wyłączenia ostrzeżeń.
auto_ptr
jest trochę naff, ale w rzeczywistości robi to, co mówi na puszce.jeśli naprawdę chcemy zdezaktualizować rzeczy, nominuję
printf()
. Ale wyobraźcie sobie pisk, który się wydarzy.auto_ptr
nie ma zbyt wielu przyjaciół, ale przynajmniej w moim kodzie C ++ jest używany częściej niżprintf
, co wcale nie jest używane.komitet ma kiepską sytuację, aby to naprawić - przestarzałe statyczne w zakresie przestrzeni nazw, a teraz wydaje się to nieaktualne - nie zdziwiłbym się, gdyby
auto_ptr
dokonał podobnego powrotuwreszcie, cokolwiek powie komitet, implementatorzy kompilatora ignorują je - po prostu nie mogą ryzykować złamania kodu klienta, mogą jedynie wydać irytujące ostrzeżenia.
Więc moje pytanie - czy uważasz zaniechanie (czegokolwiek, nie tylko auto_ptrs, a nie tylko w C ++) dobrym pomysłem, a jeśli tak, to dlaczego?
unique_ptr
i bądź szczęśliwszy.
auto_ptr
jako przykład.