c++ - C++ template mangling DMC vs VS
- IgorStepanov (34/34) Jul 07 2013 I've tried to compile next code:
- IgorStepanov (7/7) Jul 07 2013 Also: VS mangler substitute repeated templated parts of name, DMC
I've tried to compile next code:
struct Goo
{
template<class X>
struct Boo
{
template<class Y>
struct Xoo
{
Y* v;
};
X* v;
};
void bar2(Boo<void>::Xoo<int> arg1);
};
void Goo::bar2(Goo::Boo<void>::Xoo<int> arg1)
{
}
Visual Studio mangle Goo::bar2 as
"?bar2 Goo QAEXU?$Xoo H ?$Boo X 1 Z"
It's expected:
?$Xoo H : - ::Xoo<int>
?$Boo X : - ::Boo<void>
1 : - Goo (saved early)
DMC mangle Goo::bar2 as
"?bar2 Goo QAEXU?$Xoo ?$Boo Goo X Goo H ?$Boo Goo X 1 Z"
?$Xoo ?$Boo Goo X Goo H :- ::Xoo<int>
?$Boo Goo X :- ::Boo<void>
1 : - Goo (saved early)
Ergo: DMC writes all parent names for each part of templated name.
Is this behaviour expected and desirable or it is bug?
(I'm writing C++ mangler for DMD now and I need to know: should I
create special cases for DMC and VS or I can use VS mangling
scheme and wait when this issue will be fixed in DMC?)
Jul 07 2013
Also: VS mangler substitute repeated templated parts of name, DMC
not.
EG:
void gun(P1::Mem<int>, P2::Mem<int>){}
VS: "?gun YAXU?$Mem H P1 U1P2 Z"
Attention: VS has substituted second Mem<int> with "1"
DMC: "gun YAXU?$Mem P1 H P1 U?$Mem P2 H P2 "
Jul 07 2013








"IgorStepanov" <wazar mail.ru>