phobos icon indicating copy to clipboard operation
phobos copied to clipboard

hasbitfield trait

Open crazymonkyyy opened this issue 4 months ago • 1 comments

I see somethings happening around bitfields I suggest this code:

struct foo{
	bool iscircle:1;
	uint rest:31;
}
struct bar{
	bool iscircle;
	uint rest;
}
template Val(alias A){//belongs in std.meta
	enum Val=A;
}
template hasbitfields(T){//belongs in std.traits
	static if( ! is(T==struct)){
		enum hasbitfields=false;
	} else {
		alias hasbitfields_=Val!false;
		static foreach(A;T.tupleof){
			static if(__traits(isBitfield,A)){
				hasbitfields_=Val!true;
		}}
		enum hasbitfields=hasbitfields_;
}}
static assert(hasbitfields!foo);
static assert( ! hasbitfields!bar);

crazymonkyyy avatar Aug 06 '25 18:08 crazymonkyyy

BTW instead of Val you can use std.meta.Alias.

ntrel avatar Aug 07 '25 16:08 ntrel