Как получить тип по указателю на него?
От: LazyKarlson  
Дата: 25.06.18 20:34
Оценка:
Что хочется: как-нибудь автоматически вывести тип, на который указывает указатель, имея только тип самого указателя.
Пример:
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 или что-то подобное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.