<br><br><div class="gmail_quote">On Fri, Dec 14, 2012 at 1:18 AM, bearophile <span dir="ltr"><<a href="mailto:bearophileHUGS@lycos.com" target="_blank">bearophileHUGS@lycos.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br></div>
Fit to be added to Phobos?<br></blockquote><div><br></div><div>Maybe, I don't know. People seem to ask for this quite regularly.</div><div><br></div><div>Here is a slightly improved version, what do you think?</div><div>
<br></div><div>template isTemplatedType(Type...) if (Type.length == 1)</div><div>{</div><div>    mixin("alias " ~ Type[0].stringof ~ " U;");</div><div>    static if (is(Type[0] _ == U!Args, Args...))</div>
<div>        enum isTemplatedType = true;</div><div>    else</div><div>        enum isTemplatedType = false;</div><div>}</div><div><br></div><div>template TemplateArity(Type...) if (Type.length == 1 && isTemplatedType!(Type[0]))</div>
<div>{</div><div>    mixin("alias " ~ Type[0].stringof ~ " U;");</div><div>    static if (is(Type[0] _ == U!Args, Args...))</div><div>        enum TemplateArity = Args.length;</div><div>}</div><div><br>
</div><div>template TemplateArgs(Type...) if (Type.length == 1 && isTemplatedType!(Type[0]))</div><div>{</div><div>    mixin("alias " ~ Type[0].stringof ~ " U;");</div><div>    static if (is(Type[0] _ == U!Args, Args...))</div>
<div>        alias Args TemplateArgs;</div><div>}</div><div><br></div><div>void main()</div><div>{</div><div>    alias Tuple!(int, double) T;</div><div>    writeln(TemplateArity!T);</div><div>    writeln(TemplateArgs!T.stringof);</div>
<div>    writeln(isTemplatedType!T);</div><div>} </div></div>