Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision 7f18438f6ced55ef03d1637ee81da566c4cbb844)
+++ src/Parser/TypeData.cpp	(revision 830edc615fda3f16d44327cfaf8827106141df2d)
@@ -1454,5 +1454,9 @@
 	assert( td->kind == TypeData::Aggregate );
 	assert( td->aggregate.kind == ast::AggregateDecl::Enum );
-	ast::Type * baseType = td->base ? typebuild(td->base) : nullptr;
+	ast::ptr<ast::Type> baseType = td->base ? typebuild(td->base) : nullptr;
+	if ( baseType ) {
+		ast::add_qualifiers( baseType, ast::CV::Qualifiers( ast::CV::Const ));
+	}
+
 	ast::EnumDecl * ret = new ast::EnumDecl(
 		td->location,
Index: src/Validate/ImplementEnumFunc.cpp
===================================================================
--- src/Validate/ImplementEnumFunc.cpp	(revision 7f18438f6ced55ef03d1637ee81da566c4cbb844)
+++ src/Validate/ImplementEnumFunc.cpp	(revision 830edc615fda3f16d44327cfaf8827106141df2d)
@@ -148,6 +148,7 @@
 	} else {
 		auto untypedThisInit = new ast::UntypedExpr(
-			getLocation(), new ast::NameExpr(getLocation(), "?++"),
-			{prevInitExpr});
+			getLocation(), new ast::NameExpr(getLocation(), "?+?"),
+			{	prevInitExpr,
+				new ast::ConstantExpr( getLocation(), new ast::OneType, "1", 1) });
 		return new ast::SingleInit(getLocation(), untypedThisInit);
 	}
