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 5b21be4b3a1..2b9af86d06a 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 @@ -178,7 +178,13 @@ public class AbstractCPPClassSpecializationScope implements ICPPClassSpecializat T[] newArray= array.clone(); for (int i = 0; i < newArray.length; i++) { - newArray[i]= (T) specialClass.specializeMember(array[i], point); + IBinding specializedMember = specialClass.specializeMember(array[i], point); + try { + newArray[i]= (T) specializedMember; + } catch (ArrayStoreException e) { + throw new ArrayStoreException("Can't cast " + specializedMember.getClass() + //$NON-NLS-1$ + " to " + array.getClass().getComponentType().getName()); //$NON-NLS-1$ + } } return newArray; }