On Tue, Aug 25, 2020 at 03:41:06AM +0000, Jon Degenhardt via Digitalmars-d-learn wrote: > What's the best way to get the element type of an array at compile > time? > > Something like std.range.ElementType except that works on any array > type. There is std.traits.ForeachType, but it wasn't clear if that > was the right thing. [...]
alias T = ... /* the type to inspect */ static if (is(T : E[], E)) { ... /* in this block, E is the element type */ } Or if you need to use it in another expression: template ArrayElemType(T) { static if (is(T : E[], E)) { alias ArrayElemType = E; } else alias ArrayElemType = void; // or static assert(0) if it should be an error } int[] myArr; pragma(msg, ArrayElemType!(typeof(myArr))); // int string myStr; pragma(msg, ArrayElemType!(typeof(myStr))); // immutable(char) T -- The best way to destroy a cause is to defend it poorly.