Index: libcfa/src/enum.hfa
===================================================================
--- libcfa/src/enum.hfa	(revision 4e107bfd93e8cc8dd0b600da5f069546baac2c00)
+++ libcfa/src/enum.hfa	(revision 1571e4d69c6616d989853ffc4c395d0ed369f67b)
@@ -66,4 +66,9 @@
 		return l;
 	}
+
+	E ?+=? ( E & l, one_t ) {
+		l = succ(l);
+		return l;
+	}
 	
 	E ?++( E & l ) {
Index: src/ResolvExpr/ResolveTypeof.cpp
===================================================================
--- src/ResolvExpr/ResolveTypeof.cpp	(revision 4e107bfd93e8cc8dd0b600da5f069546baac2c00)
+++ src/ResolvExpr/ResolveTypeof.cpp	(revision 1571e4d69c6616d989853ffc4c395d0ed369f67b)
@@ -130,4 +130,19 @@
 	mutDecl->type = renameTyVars(mutDecl->type, RenameMode::GEN_EXPR_ID);
 	mutDecl->isTypeFixed = true;
+
+	auto enumInst = decl->type.as<ast::EnumInstType>();
+	if ( enumInst && enumInst->base->isCfa ) {
+		if ( auto init = decl->init.as<ast::SingleInit>() ) {
+			if ( auto initExpr = init->value.as<ast::ConstantExpr>() ) {
+				if ( initExpr->result.as<ast::ZeroType>() ) {
+					auto newInit = new ast::SingleInit( init->location, 
+						ast::UntypedExpr::createCall( init->location, "lowerBound", {} )
+					);
+					mutDecl->init = newInit;
+				}
+			}
+		}
+	}
+
 	return mutDecl;
 }
