def _always_false_from_type(t: ir0.Expr): return _metafunction_call( template_expr=GlobalLiterals.ALWAYS_FALSE_FROM_TYPE, args=[t], instantiation_might_trigger_static_asserts=False, member_name='value', member_type=ir0.BoolType())
def bool_member_access(class_expr: ir0.Expr, member_name: str): return ir0.ClassMemberAccess(class_type_expr=class_expr, member_name=member_name, member_type=ir0.BoolType())
def _variadic_bool_arg_type(): return ir0.TemplateArgType(expr_type=ir0.BoolType(), is_variadic=True)
def _variadic_bool_arg_decl(name: str): return ir0.TemplateArgDecl(expr_type=ir0.BoolType(), name=name, is_variadic=True)
def _local_variadic_bool(cpp_type: str): return ir0.AtomicTypeLiteral.for_local(cpp_type, ir0.BoolType(), is_variadic=True)
def _is_in_type_set(t: ir0.Expr, s: ir0.Expr): return _metafunction_call(template_expr=GlobalLiterals.IS_IN_TYPE_LIST, args=[t, s], instantiation_might_trigger_static_asserts=False, member_type=ir0.BoolType(), member_name='value')
def _is_same(lhs: ir0.Expr, rhs: ir0.Expr): return _metafunction_call(template_expr=GlobalLiterals.STD_IS_SAME, args=[lhs, rhs], instantiation_might_trigger_static_asserts=False, member_name='value', member_type=ir0.BoolType())
def _bool_arg_type() -> ir0.TemplateArgType: return ir0.TemplateArgType(expr_type=ir0.BoolType(), is_variadic=False)