Stringify template arguments

c++, c-preprocessor, metadata, stringification, templates

Solution

You could try

 typeid(T).name()

Edit: Fixed based on comments.

Problem

Is it possible in C++ to stringify template arguments? I tried this: ``` #include <iostream> #define STRINGIFY(x) #x template <typename T> struct Stringify { Stringify() { std::cout << STRINGIFY(T) << endl; } }; int main() { Stringify<int> s; } ``` But what I get is a `T`, and not an `int`. Seems that the preprocessor macros are evaluated before template instantiation. Is there any other way to do this? Is there any way for the preprocessing to take place after template instantiation? (Compiler is VC++).

Original source