Index: src/CodeGen/OperatorTable.cc
===================================================================
--- src/CodeGen/OperatorTable.cc	(revision b5563e1f1d228b7c95815b2fddbff04bbb84de4b)
+++ src/CodeGen/OperatorTable.cc	(revision 3d2b7bc8ab86d81a629447f35c464695613e0057)
@@ -79,5 +79,5 @@
 	} // namespace
 
-	bool operatorLookup( std::string funcName, OperatorInfo &info ) {
+	bool operatorLookup( const std::string & funcName, OperatorInfo & info ) {
 		static bool init = false;
 		if ( ! init ) {
@@ -100,4 +100,9 @@
 			return true;
 		} // if
+	}
+
+	bool isOperator( const std::string & funcName ) {
+		OperatorInfo info;
+		return operatorLookup( funcName, info );
 	}
 
Index: src/CodeGen/OperatorTable.h
===================================================================
--- src/CodeGen/OperatorTable.h	(revision b5563e1f1d228b7c95815b2fddbff04bbb84de4b)
+++ src/CodeGen/OperatorTable.h	(revision 3d2b7bc8ab86d81a629447f35c464695613e0057)
@@ -41,5 +41,6 @@
 	};
 
-	bool operatorLookup( std::string funcName, OperatorInfo &info );
+	bool isOperator( const std::string & funcName );
+	bool operatorLookup( const std::string & funcName, OperatorInfo & info );
 
 	bool isConstructor( const std::string & );
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision b5563e1f1d228b7c95815b2fddbff04bbb84de4b)
+++ src/SymTab/Validate.cc	(revision 3d2b7bc8ab86d81a629447f35c464695613e0057)
@@ -630,4 +630,8 @@
 			forallFixer( pointer->base->forall, object );
 		} // if
+		// ensure that operator names only apply to functions or function pointers
+		if ( CodeGen::isOperator( object->name ) && ! dynamic_cast< FunctionType * >( object->type->stripDeclarator() ) ) {
+			SemanticError( object->location, toCString( "operator ", object->name.c_str(), " is not a function or function pointer." )  );
+		}
 		object->fixUniqueId();
 	}
Index: src/tests/operators.c
===================================================================
--- src/tests/operators.c	(revision b5563e1f1d228b7c95815b2fddbff04bbb84de4b)
+++ src/tests/operators.c	(revision 3d2b7bc8ab86d81a629447f35c464695613e0057)
@@ -27,6 +27,4 @@
 	a(b);
 	a + b;
-	struct accumulator ?+?;	// why not, eh?
-	a + b;
 }
 
