Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 728)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 732)
@@ -1438,4 +1438,18 @@
 	}
 
+	// 実型パラメータに値型が含まれないとき
+	bool isValueType = false;
+	BOOST_FOREACH( const Type &actualType, actualTypes )
+	{
+		if( actualType.IsValueType() )
+		{
+			isValueType = true;
+		}
+	}
+	if( !isValueType )
+	{
+		return &_class;
+	}
+
 	// 展開済みのクラスがあればそれを返す
 	BOOST_FOREACH( const ExpandedTemplateClass *pExpandedTemplateClass, _class.expandedTemplateClasses )
@@ -1472,6 +1486,12 @@
 	if( _class.HasSuperClass() )
 	{
-		const CClass *pExpandedSuperClass = TemplateExpand( *const_cast<CClass *>(&_class.GetSuperClass()), actualTypes );
-		pNewClass->InheritsClass( *pExpandedSuperClass, pNewClass->GetSuperClassActualTypeParameters(), -1 );
+		Types expandedSuperClassActualTypes;
+		BOOST_FOREACH( const Type &superClassActualType, _class.GetSuperClassActualTypeParameters() )
+		{
+			expandedSuperClassActualTypes.push_back( TemplateExpand_ResolveType( superClassActualType, actualTypes ) );
+		}
+
+		const CClass *pExpandedSuperClass = TemplateExpand( *const_cast<CClass *>(&_class.GetSuperClass()), expandedSuperClassActualTypes );
+		pNewClass->InheritsClass( *pExpandedSuperClass, expandedSuperClassActualTypes, -1 );
 	}
 
