С++11 (& Co)
и что должно быть в смартпоинтере предусмотрено, на случай если конструктор швыряет исключение?
(ясно что смартпоинтер при этом не сохранит указатель об\екта, и в своем деструкторе ничего не сделает - и для этого ничего специального программировать не надо).
Ну а насчет быстродействия - это надо постараться написать тормоза при программировании смартпоинтера. :))
Я довольно много оптимизировал старые программы по быстродействию. И ни разу не было проблем с коллекциями, или лучше сказать так: оптимизация внутреннего кода коллекций/деревьев могла принести очень малый выигрыш в быстродействии по сравнению с другими оптимизациями (клопоту густо, в жывоти пусто), потому связываться смысла нет.
Больше всего тормозов давала плохая организация программы:
- лишние обращения к файлам
- вызовы дорогостоящих функций из цикла, когда можно было один раз перед циклом
- линейный поиск вместо бинарного поиска
- поиск вместо обращения по хэндлу