Предполагая, что ваша цель
decltype(*a)*
используется для обеспечения T_
типа указателя - например, char*
, int * и shared_ptr.
... вам нужен простой шаблон, а не код, который может привести к сбою компилятора:)
Вот кое-что, что может работать для вас
#include <memory>
#include <iostream>
// uncomment this "catch all" function to make select(0) compile
// int select(...){ return 0;}
template<class T> int select(T*){ return 1;}
template<class T> int select(std::auto_ptr<T>){ return 1;}
// add boost::shared_ptr etc, as necessary
int main()
{
std::cout << select(0) << std::endl;
std::cout << select(std::auto_ptr<int>()) << std::endl;
std::cout << select(&std::cout) << std::endl;
return 0;
}