Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision 358e3481532c4a664f6dc35f8bec22c252d9e7f3)
+++ src/AST/Expr.cpp	(revision 76b507d24aba8184d760ef5fb795294bcdca3103)
@@ -284,6 +284,9 @@
 // --- CountExpr
 
+CountExpr::CountExpr( const CodeLocation & loc, const Expr * e )
+: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), expr(e), type( nullptr ) {}
+
 CountExpr::CountExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), type( t ) {}
+: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), expr(nullptr), type( t ) {}
 
 // --- AlignofExpr
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 358e3481532c4a664f6dc35f8bec22c252d9e7f3)
+++ src/AST/Expr.hpp	(revision 76b507d24aba8184d760ef5fb795294bcdca3103)
@@ -496,6 +496,8 @@
 class CountExpr final : public Expr {
 public:
+	ptr<Expr> expr;
 	ptr<Type> type;
 
+	CountExpr( const CodeLocation & loc, const Expr * t );
 	CountExpr( const CodeLocation & loc, const Type * t );
 
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 358e3481532c4a664f6dc35f8bec22c252d9e7f3)
+++ src/AST/Pass.impl.hpp	(revision 76b507d24aba8184d760ef5fb795294bcdca3103)
@@ -1339,5 +1339,9 @@
 			maybe_accept( node, &CountExpr::result );
 		}
-		maybe_accept( node, &CountExpr::type );
+		if ( node->type ) {
+			maybe_accept( node, &CountExpr::type );
+		} else {
+			maybe_accept( node, &CountExpr::expr );
+		}
 	}
 	VISIT_END( Expr, node );
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 358e3481532c4a664f6dc35f8bec22c252d9e7f3)
+++ src/AST/Print.cpp	(revision 76b507d24aba8184d760ef5fb795294bcdca3103)
@@ -1146,5 +1146,6 @@
 		os << "Count Expression on: ";
 		++indent;
-		node->type->accept( *this );
+		if ( node->type ) node->type->accept( *this );
+		else safe_print( node->expr );
 		--indent;
 		postprint( node );
