www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to implement `isTemplate` traits?

reply drug <drug2004 bk.ru> writes:
I need to separate templates:
```
foreach(member; __traits(allMembers, V))
{
	static if (__traits(compiles, { auto _val = &__traits(getMember, value, 
member); })
	{
		// a template needs to be instantiated to be addressable, so it works, 
but I think it's dirty hack instead of dry and clean way...
	}
}
```
May be phobos has such traits somewhere?
Oct 04
parent reply Biotronic <simen.kjaras gmail.com> writes:
On Wednesday, 4 October 2017 at 09:32:31 UTC, drug wrote:
 I need to separate templates:
 ```
 foreach(member; __traits(allMembers, V))
 {
 	static if (__traits(compiles, { auto _val = 
 &__traits(getMember, value, member); })
 	{
 		// a template needs to be instantiated to be addressable, so 
 it works, but I think it's dirty hack instead of dry and clean 
 way...
 	}
 }
 ```
 May be phobos has such traits somewhere?
template isTemplate(T...) if (T.length == 1) { enum isTemplate = __traits(isTemplate, T[0]); } -- Biotronic
Oct 04
parent drug <drug2004 bk.ru> writes:
04.10.2017 12:54, Biotronic пишет:
 
 template isTemplate(T...) if (T.length == 1) {
      enum isTemplate = __traits(isTemplate, T[0]);
 }
 
 -- 
    Biotronic
Thank you!
Oct 04