diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp
index f8ddde8b48e8b8162ba29888fafd067633dbcf79..038583c27d4bab26a0448e3548f0042953ac8cbf 100644
--- a/src/shared/cplusplus/CheckDeclaration.cpp
+++ b/src/shared/cplusplus/CheckDeclaration.cpp
@@ -389,6 +389,11 @@ bool CheckDeclaration::visit(UsingDirectiveAST *ast)
     UsingNamespaceDirective *u = control()->newUsingNamespaceDirective(ast->firstToken(), name);
     ast->symbol = u;
     _scope->enterSymbol(u);
+
+    if (! (_scope->isBlockScope() || _scope->isNamespaceScope()))
+        translationUnit()->error(ast->firstToken(),
+                                 "using-directive not within namespace or block scope");
+
     return false;
 }