Здравствуйте, makes, Вы писали:
M>В твоем варианте ты неявно убираешь константность объекта, а это не есть хорошо.
Убрать нельзя, правильней сказать неявно добавляется
Здравствуйте, igna, Вы писали:
I>Здравствуйте, makes, Вы писали:
M>>В твоем варианте ты неявно убираешь константность объекта, а это не есть хорошо.
I>Неверно. Приглядись повнимательнее, объект там не константен (если конечно T не константен), константным там является auto_ptr.
смысл выражения
const& ptr<T>
в том, чтобы "защитить" от изменения не поинтер (кому он нужен!), а собственно сам объект.
ИМХО
Здравствуйте, igna, Вы писали:
I>Куда чего добавляется?
У Вас берется простой П и добавляется константность и зовется T T::get() const всегда, а в исходном может зваться простой T T::get()
Здравствуйте, Programador, Вы писали:
P>Здравствуйте, igna, Вы писали:
I>>Ну а какой смысл добавляет перегрузка? P>может в T::get() чегото сооптимизировали, но думаю врядли
Здравствуйте, Programador, Вы писали:
P>У Вас берется простой П и добавляется константность и зовется T T::get() const всегда, а в исходном может зваться простой T T::get()
Здравствуйте, igna, Вы писали:
I>А он там есть, простой?
Что значит есть? Он может быть простой.
Если хранилище собственно данных в куче и исходный с конечным константные то возможно можно избежать дублирования данных, но это только возможно и смотря как писать
Здравствуйте, igna, Вы писали:
I>В чем смысл этой перегрузки, почему вместо двух шаблонов не использовать один?:
Я считаю, просто дело привычки писать две версии в подобных случаях, написано неправильно "на автомате".
Если бы это было задумано, const вариант был бы консистентен: