File tree Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -78,7 +78,11 @@ public override bool VisitFieldDecl(Field field)
78
78
if ( ! base . VisitDeclaration ( field ) )
79
79
return false ;
80
80
81
- CheckForInternalSpecialization ( field , field . Type ) ;
81
+ if ( field . Access == AccessSpecifier . Private ||
82
+ ! ASTUtils . CheckTypeForSpecialization ( field . Type ,
83
+ field , AddSpecialization , Context . TypeMaps ) )
84
+ CheckForInternalSpecialization ( field , field . Type ) ;
85
+
82
86
return true ;
83
87
}
84
88
Original file line number Diff line number Diff line change @@ -871,6 +871,20 @@ public void TestTemplateDerivedFromRegularDynamic()
871
871
}
872
872
}
873
873
874
+ [ Test ]
875
+ public void TestFieldWithSpecializationType ( )
876
+ {
877
+ using ( var virtualTemplate = new VirtualTemplate < int > ( ) )
878
+ {
879
+ using ( var dependentValueFields = new DependentValueFields < float > ( ) )
880
+ {
881
+ dependentValueFields . DependentValue = 15 ;
882
+ virtualTemplate . FieldWithSpecializationType = dependentValueFields ;
883
+ Assert . That ( virtualTemplate . FieldWithSpecializationType . DependentValue , Is . EqualTo ( 15 ) ) ;
884
+ }
885
+ }
886
+ }
887
+
874
888
[ Test ]
875
889
public void TestAbstractImplementatonsInPrimaryAndSecondaryBases ( )
876
890
{
Original file line number Diff line number Diff line change @@ -388,6 +388,7 @@ class VirtualTemplate
388
388
VirtualTemplate (OptionalTemplateArgs<T> optionalTemplateArgs);
389
389
virtual ~VirtualTemplate ();
390
390
virtual int function ();
391
+ DependentValueFields<float > fieldWithSpecializationType;
391
392
};
392
393
393
394
template <typename T>
@@ -569,6 +570,7 @@ template class DLL_API IndependentFields<T1>;
569
570
template class DLL_API IndependentFields<std::string>;
570
571
template class DLL_API Base<int >;
571
572
template class DLL_API DependentValueFields<int >;
573
+ template class DLL_API DependentValueFields<float >;
572
574
template class DLL_API VirtualTemplate<int >;
573
575
template class DLL_API VirtualTemplate<bool >;
574
576
template class DLL_API HasDefaultTemplateArgument<int , int >;
You can’t perform that action at this time.
0 commit comments