Печать имени типа шаблона во время компиляции

При создании функции шаблона в C++ существует ли простой способ представления имени типа шаблона в виде строки? У меня есть простой тестовый пример, чтобы показать, что я пытаюсь сделать (обратите внимание, что показанный код не компилируется):

#include <stdio.h>
template <typename type>
type print(type *addr) 
{
  printf("type is: %s",type);
}

int main()
{
  int a;
  print(&a);
}

// Would like to print something like:
// type is: int

Я думаю, что имя типа должно быть доступно во время компиляции, когда создается экземпляр функции, но я не настолько хорошо знаком с шаблонами, и я не видел способа получить имя типа в виде строки

Причина, по которой я хочу сделать это, заключается в отладке некоторых типов printf. поведение барана. Поэтому для некоторых вещей я хочу вывести информацию о том, какие функции выполнялись. Это не слишком важно, поэтому, если решение слишком сложное, я бы пропустил добавление этой информации в свою функцию ведения журнала. Но если бы существовал простой способ сделать это, информация была бы полезной.

34
задан Erel Segal-Halevi 16 May 2019 в 01:36
поделиться