digitalmars.D.learn - Print out the name of a type
- Joseph Rushton Wakeling (12/12) Jul 04 2013 Suppose I've got a function that is conditional on a type:
- Dicebot (7/8) Jul 04 2013 Each has own disadvantages, chose one ;)
- monarch_dodra (5/20) Jul 04 2013 What he said. Or if you don't even have T, use
Suppose I've got a function that is conditional on a type: void foo(T)(/* input vars */) { ... } How could I print out using writeln the name of that type? So that if I call foo!double(...); ... I would see: Today, Michael, I'm going to be a double! ... whereas if I give it, foo!uint(...); I'd see Today, Michael, I'm going to be a uint! and so on. Ideally this should also work for complex data types such as structs, classes, etc.
Jul 04 2013
On Thursday, 4 July 2013 at 14:46:36 UTC, Joseph Rushton Wakeling wrote:...Each has own disadvantages, chose one ;) T.stringof // simple & reliable, won't work for function aliases __traits(identifier, T) // only symbols std.traits.fullyQualifiedName!T // issues with templated types, includes module/package into name
Jul 04 2013
On Thursday, 4 July 2013 at 14:51:21 UTC, Artur Skawina wrote:On 07/04/13 16:46, Joseph Rushton Wakeling wrote:What he said. Or if you don't even have T, use "typeof(t).stringof". This also works in pragma msg: pragma(msg, T.stringof);Suppose I've got a function that is conditional on a type: void foo(T)(/* input vars */) { ... } How could I print out using writeln the name of that type? So that if I call foo!double(...); ... I would see: Today, Michael, I'm going to be a double!writeln("Today, Michael, I'm going to be a "~T.stringof~"!") artur
Jul 04 2013