; CHECK-NOT: Invalid mangled name
??$?BH@TemplateOps@@QAEHXZ
+; CHECK: int __thiscall TemplateOps::operator<int> int(void)
+
??BOps@@QAEHXZ
+; CHECK: int __thiscall Ops::operator int(void)
+
??BConstOps@@QAE?BHXZ
+; CHECK: int const __thiscall ConstOps::operator int const(void)
+
??BVolatileOps@@QAE?CHXZ
+; CHECK: int volatile __thiscall VolatileOps::operator int volatile(void)
+
??BConstVolatileOps@@QAE?DHXZ
+; CHECK: int const volatile __thiscall ConstVolatileOps::operator int const volatile(void)
+
??$?BN@TemplateOps@@QAENXZ
+; CHECK: double __thiscall TemplateOps::operator<double> double(void)
+
??BOps@@QAENXZ
+; CHECK: double __thiscall Ops::operator double(void)
+
??BConstOps@@QAE?BNXZ
+; CHECK: double const __thiscall ConstOps::operator double const(void)
+
??BVolatileOps@@QAE?CNXZ
+; CHECK: double volatile __thiscall VolatileOps::operator double volatile(void)
+
??BConstVolatileOps@@QAE?DNXZ
+; CHECK: double const volatile __thiscall ConstVolatileOps::operator double const volatile(void)
+
??BCompoundTypeOps@@QAEPAHXZ
+; CHECK: nt * __thiscall CompoundTypeOps::operator int *(void)
+
??BCompoundTypeOps@@QAEPBHXZ
+; CHECK: int const * __thiscall CompoundTypeOps::operator int const *(void)
+
??BCompoundTypeOps@@QAE$$QAHXZ
+; CHECK: int && __thiscall CompoundTypeOps::operator int &&(void)
+
??BCompoundTypeOps@@QAE?AU?$Foo@H@@XZ
+; CHECK: struct Foo<int> __thiscall CompoundTypeOps::operator struct Foo<int>(void)
+
??$?BH@CompoundTypeOps@@QAE?AU?$Bar@U?$Foo@H@@@@XZ
-??$?BPAH@TemplateOps@@QAEPAHXZ
+; CHECK: struct Bar<struct Foo<int>> __thiscall CompoundTypeOps::operator<int> struct Bar<struct Foo<int>>(void)
+??$?BPAH@TemplateOps@@QAEPAHXZ
+; CHECK: int * __thiscall TemplateOps::operator<int *> int *(void)