diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ImplicitsAnalysis.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ImplicitsAnalysis.java index b92fde045b2..fb09e6bf341 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ImplicitsAnalysis.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ImplicitsAnalysis.java @@ -164,7 +164,8 @@ final class ImplicitsAnalysis { hasCopyAssignmentOperator = true; } - if (hasCopyConstructor && hasDestructor && hasCopyAssignmentOperator && baseSpecifiers.length == 0) { + if (hasCopyConstructor && hasDestructor && hasCopyAssignmentOperator && baseSpecifiers.length == 0 + && hasNonStaticFields) { break; // Nothing else to look for. } } else if (dcltor instanceof ICPPASTFieldDeclarator && @@ -212,7 +213,7 @@ final class ImplicitsAnalysis { ICPPBase[] bases = ClassTypeHelper.getBases(classType, compositeTypeSpecifier); for (ICPPBase base : bases) { if (base.isVirtual()) - return true; + return false; } ICPPClassType[] baseClasses = ClassTypeHelper.getAllBases(classType, compositeTypeSpecifier);