Index: lib/Sema/SemaOverload.cpp =================================================================== --- lib/Sema/SemaOverload.cpp +++ lib/Sema/SemaOverload.cpp @@ -11604,6 +11604,14 @@ FoundDecl = MemExpr->getFoundDecl(); Qualifier = MemExpr->getQualifier(); UnbridgedCasts.restore(); + + // Calls to deleted member functions are verboten. + if (Method && Method->isDeleted()) + Diag(MemExpr->getLocStart(), diag::err_ovl_deleted_member_call) + << true /* isDeleted */ + << Method + << getDeletedOrUnavailableSuffix(Method) + << MemExpr->getSourceRange(); } else { UnresolvedMemberExpr *UnresExpr = cast(NakedMemExpr); Qualifier = UnresExpr->getQualifier(); Index: test/SemaCXX/deleted-function-access.cpp =================================================================== --- test/SemaCXX/deleted-function-access.cpp +++ test/SemaCXX/deleted-function-access.cpp @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s + +struct S { virtual void f() = delete; + void g() { f(); } }; //expected-error{{call to deleted member function 'f'}}