Bug 410519 - UnsupportedOperationException: addMember method should be
called instead.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
index 070c5a6..0d40d06 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2012 IBM Corporation and others.
+ * Copyright (c) 2005, 2013 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -106,11 +106,12 @@
 		IScope classScope = specialized.getCompositeScope();
 		if (classScope == null)
 			return IBinding.EMPTY_BINDING_ARRAY;
-		
-		IBinding[] bindings= classScope.getBindings(lookup);
+
+	    IBinding[] bindings= classScope.getBindings(lookup);
 		IBinding[] result= null;
 		for (IBinding binding : bindings) {
-			if (binding == specialized) {
+			if (binding == specialized ||
+					(binding instanceof ICPPClassType && specialized.isSameType((IType) binding))) {
 				binding= specialClass;
 			} else {
 				binding= specialClass.specializeMember(binding, lookup.getLookupPoint());