Есть такая вот рабочая штука:
#include <memory>
class A {
public:
};
template <template <typename, typename> class Ptr>
void foo(Ptr<A, std::default_delete<A> >& ptr)
{
}
int main() {
std::unique_ptr<A> ptr(new A);
foo(ptr);
}
Хочется избавиться от явного указания std::default_delete<A>. Вопрос - как? Смысл шаблона foo в том, что аргумент foo должен быть автоматическим указателем (unique_ptr, shared_ptr и т.п.) именно на объект типа A.