Skip to content

hasbitfield trait #10841

@crazymonkyyy

Description

@crazymonkyyy

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);

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions