How to check if aggregate member is static templated method?

bauss jj_1337 at live.dk
Fri Feb 16 11:45:14 UTC 2018


On Thursday, 15 February 2018 at 15:49:47 UTC, RazvanN wrote:
> On Thursday, 15 February 2018 at 13:51:41 UTC, drug wrote:
>> 15.02.2018 16:50, drug пишет:
>>> https://run.dlang.io/is/zHT2XZ
>> I can check againts if member is either static function or 
>> template. But I failed to check if it both static and 
>> templated.
>
> The best I could come up with is:
>
> struct Foo
> {
>     static staticMethod()
>     {
>     }
>
>     static templatedStaticMethod(T)(T t)
>     {
>     }
> }
>
> void main()
> {
> 	static if(__traits(isTemplate, Foo.templatedStaticMethod) &&
>                   __traits(isStaticFunction, 
> Foo.templatedStaticMethod!int))
>         {
>              writeln("win");
>         }
> }
>
> It seems like a templated method can be queried if it is static 
> only after it's instantiation. Hope this helps.
>
> Cheers,
> RazvanN

I would kinda argue that it's a bug, because checking whether a 
template function is static can become very complex if the 
template also has constraints etc.


More information about the Digitalmars-d-learn mailing list