On Tuesday, November 22, 2016 12:21:18 Yuxuan Shui via Digitalmars-d-learn wrote: > Is there a way to get a template function return type with > instantiating it? The return type is independent of the template > arguments.
No. There _is_ no function unless the template is instantiated. Remember that a templated function such as auto foo(T)(T t) if(cond) { ... } gets lowered to template foo(T) if(cond) { auto foo(T t) { ... } } Without instantiating the template, _nothing_ within the template actually exists except with regards to documentation generation. Not even the unittest blocks inside of a templated type exist until the type is instantiated. A template is just that - a template for code - not actual code to run, examine, or infer stuff from. It's only instantiations of the template that can be run, examined, or have stuff inferred about them. > I'm asking because there's potentially recursive template > instantiation if I do try to instantiate it. If you want to avoid a recursive instantiation, then use a static if inside the template to break the recursion. - Jonathan M Davis