Что хочется: как-нибудь автоматически вывести тип, на который указывает указатель, имея только тип самого указателя.
Пример:
template < class T > class C
{
public:
C (T* t) {};
};
struct S
{
int _internal;
};
S* CreateS()
{
return new S();
}
typedef S* PS;
int main()
{
PS p = CreateS();
// Как получается
C < S > c1(p);
// Как хотелось бы, но не получается:
C < *PS > c2(p);
// Или что-то подобное.
}
Зачем: бывает так, что указатель описан в API,а то, на что он указывает, нет.
Откуда ноги поросли: Захотел HKEY из Win32 обернуть в unique_ptr с RegCloseKey в качестве deleter'a. Все хорошо, только в качестве типа в конструктор unique_ptr приходится передавать HKEY__, а не *HKEY или что-то подобное.