В C++ можно определить, указывает ли объект type_info
указатель во время выполнения? Например,Как проверить, является ли typeid указателем во время выполнения?
char a1;
char *a2;
const std::type_info &ti1 = typeid(a1);
const std::type_info &ti2 = typeid(a2);
std::cout << is_pointer(ti1) << std::endl;
std::cout << is_pointer(ti2) << std::endl;
напечатает false
для ti1
и true
для ti2
.
Очевидно, что можно было бы сделать std::is_pointer<decltype(a1)>::value
, но для этого требуется, чтобы у нас был доступ к идентификатору переменной a1
. Что делать, если у нас есть только доступ к его typeid
ti1
?
'ti1 == typeid (char *)'? – songyuanyao
Он должен быть общим не специфичным для 'char'. – dzhelil
Во всех практических сценариях это решение может (почти) всегда приниматься во время компиляции, я умираю, чтобы узнать прецедент. – gjha