Вместо того чтобы писать
cout<<mysteryMacro(std::string<wchar>);
вы могли бы написать
cout<<"std::string<wchar>";
Единственная цель я вижу, чтобы получить typeinformation внутри шаблона, например:
template<T>
void printT() {
cout << "T is of type"<<mysteryMacro(T);
}
Поскольку в противном случае вы автоматически знать код.
Это может быть достигнуто с помощью специализированной специализации.
Отказ от ответственности: это было непроверено, и это всего лишь намек на то, что ДОЛЖНО работать. Я не считаю это хорошим решением. Я уверен, что вы можете преобразовать это, чтобы скорее возвращать строки, чем печатать. Немного больше информации о том, что вам нужно, это было бы здорово.
template<T>
void printT() {
code that generates compile error, so you see that you have an undefined type
}
template<>
void printT<string>() {
cout << "you have a <string>";
}
Если вы хотели бы использовать шаблон для переменных, которые вы бы ВГА полагаться на автоматическое удержание параметров шаблона следующим образом:
template<>
void printT<string>(T) {
cout << "you have a <string>";
}
и использовать его как этот
int x;
printT(x);
Eventhough Я не знаю, почему, поскольку, как указано, если вы не находитесь в шаблоне, вы будете знать тип при написании кода и в шаблонах тип передается в параметрах шаблона и, следовательно, knwon (not как строка), и вы всегда можете написать printT<T>()
Нет, нет –
Макропроцессор даже не знает, что вы пишете C, не говоря уже о типах. Кроме того, имена типов не имеют * стандартного строкового представления. –
Вы все еще можете посмотреть [эту тему «Строковое представление типа»] (http://www.velocityreviews.com/forums/t742758-string-representation-of-a-type.html), который содержит обсуждение (со Скоттом Мейерсом! ^^) и некоторыми ссылками (особенно [эта реализация «Printtype»] (http://geometrica.saclay.inria.fr/team/Marc.Glisse/tmp/printtype.cpp)). (Источник: статья Скотта Майерса _Появление и исчезновение констант в C++ _) –