Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 30ee9efc6d79c28e3cd987f0535498367bb256d4)
+++ src/Parser/DeclarationNode.cc	(revision f855545d9fde3acff948e4a18f52660d06aa331b)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 20 14:56:54 2018
-// Update Count     : 1107
+// Last Modified On : Thu Nov  1 20:54:26 2018
+// Update Count     : 1108
 //
 
@@ -402,7 +402,7 @@
 }
 
-DeclarationNode * DeclarationNode::newTypeof( ExpressionNode * expr ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->type = new TypeData( TypeData::Typeof );
+DeclarationNode * DeclarationNode::newTypeof( ExpressionNode * expr, bool basetypeof ) {
+	DeclarationNode * newnode = new DeclarationNode;
+	newnode->type = new TypeData( basetypeof ? TypeData::Basetypeof : TypeData::Typeof );
 	newnode->type->typeexpr = expr;
 	return newnode;
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 30ee9efc6d79c28e3cd987f0535498367bb256d4)
+++ src/Parser/ParseNode.h	(revision f855545d9fde3acff948e4a18f52660d06aa331b)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug  4 09:39:40 2018
-// Update Count     : 853
+// Last Modified On : Thu Nov  1 20:54:53 2018
+// Update Count     : 854
 //
 
@@ -249,5 +249,5 @@
 	static DeclarationNode * newBitfield( ExpressionNode * size );
 	static DeclarationNode * newTuple( DeclarationNode * members );
-	static DeclarationNode * newTypeof( ExpressionNode * expr );
+	static DeclarationNode * newTypeof( ExpressionNode * expr, bool basetypeof = false );
 	static DeclarationNode * newAttr( const std::string *, ExpressionNode * expr ); // @ attributes
 	static DeclarationNode * newAttr( const std::string *, DeclarationNode * type ); // @ attributes
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 30ee9efc6d79c28e3cd987f0535498367bb256d4)
+++ src/Parser/TypeData.cc	(revision f855545d9fde3acff948e4a18f52660d06aa331b)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 20 14:39:31 2018
-// Update Count     : 622
+// Last Modified On : Thu Nov  1 20:56:14 2018
+// Update Count     : 623
 //
 
@@ -96,4 +96,5 @@
 		break;
 	  case Typeof:
+	  case Basetypeof:
 		// typeexpr = new Typeof_t;
 		typeexpr = nullptr;
@@ -166,4 +167,5 @@
 		break;
 	  case Typeof:
+	  case Basetypeof:
 		// delete typeexpr->expr;
 		delete typeexpr;
@@ -245,4 +247,5 @@
 		break;
 	  case Typeof:
+	  case Basetypeof:
 		newtype->typeexpr = maybeClone( typeexpr );
 		break;
@@ -419,4 +422,7 @@
 		} // if
 		break;
+	  case Basetypeof:
+		os << "base-";
+		__attribute__((fallthrough));
 	  case Typeof:
 		os << "type-of expression ";
@@ -457,4 +463,5 @@
 	  case Tuple:
 	  case Typeof:
+	  case Basetypeof:
 	  case Builtin:
 		assertf(false, "Tried to get leaf name from kind without a name: %d", kind);
@@ -535,4 +542,5 @@
 		return buildTuple( td );
 	  case TypeData::Typeof:
+	  case TypeData::Basetypeof:
 		return buildTypeof( td );
 	  case TypeData::Builtin:
@@ -929,8 +937,8 @@
 
 TypeofType * buildTypeof( const TypeData * td ) {
-	assert( td->kind == TypeData::Typeof );
+	assert( td->kind == TypeData::Typeof || td->kind == TypeData::Basetypeof );
 	assert( td->typeexpr );
 	// assert( td->typeexpr->expr );
-	return new TypeofType( buildQualifiers( td ), td->typeexpr->build() );
+	return new TypeofType( td->kind == TypeData::Basetypeof ? Type::Qualifiers{} : buildQualifiers( td ), td->typeexpr->build() );
 } // buildTypeof
 
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 30ee9efc6d79c28e3cd987f0535498367bb256d4)
+++ src/Parser/TypeData.h	(revision f855545d9fde3acff948e4a18f52660d06aa331b)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 20 13:56:40 2018
-// Update Count     : 195
+// Last Modified On : Thu Nov  1 20:56:46 2018
+// Update Count     : 196
 //
 
@@ -27,5 +27,5 @@
 struct TypeData {
 	enum Kind { Basic, Pointer, Reference, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
-				SymbolicInst, Tuple, Typeof, Builtin, GlobalScope, Qualified, Unknown };
+				SymbolicInst, Tuple, Typeof, Basetypeof, Builtin, GlobalScope, Qualified, Unknown };
 
 	struct Aggregate_t {
