При создании функции шаблона в C++ существует ли простой способ иметь имя шаблона, представленного в виде строки? У меня есть простой тест, чтобы показать, что я пытаюсь сделать (обратите внимание на код, показанный не компилируется):Печать шаблона typename во время компиляции
#include <stdio.h>
template <typename type>
type print(type *addr)
{
printf("type is: %s",typename);
}
int main()
{
int a;
print(&a);
}
// Would like to print something like:
// type is: int
Я думаю, что имяТип должен быть доступен во время компиляции, когда функция конкретизируются, но Я не знаком с шаблонами, и я не видел способа получить typename как строку.
Причина, по которой я хочу сделать это, для некоторой отладки типа printf. У меня много потоков, и переход через gdb меняет поведение программы. Поэтому для некоторых вещей я хочу сбросить информацию о том, какие функции выполнялись. Это не слишком важно, поэтому, если решение слишком сложно, я бы пропустил добавление этой информации в мою функцию регистрации. Но если бы был простой способ сделать это, это была бы полезная информация.
Попробуйте 'typeid (type) .name()' после включения –
chris
вам это нужно во время компиляции? в противном случае 'typeid (type) .name()' может помочь. – Philipp
Ничего, не видел время компиляции, но если вы его печатаете, я уверен, что вы можете понять это во время выполнения. – chris