Если «A» не подлежит копированию и назначению, у вас нет выбора, кроме как использовать указатель на «A». Если «A» не копируется и не назначается, у вас не остается выбора, кроме как использовать указатель в «А».
Однако, если предположить, что «A» можно копировать и назначать, то выбор будет зависеть от следующих факторов:
a) Вы действительно хотите, чтобы контейнер / алгоритмы работали с отдельной копией, а не с оригинальным объектом (через указатель)
б) Какое снижение производительности при копировании?
в) Хотите ли вы хранить полиморфные объекты в контейнере, используя указатель?
Я полагаю, что ссылки на RValue в C ++ 0x могут быть полезны в пунктах (a) и (b), но я не уверен.