[Issue 15608] New: extern(C++) mangling problem
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Mon Jan 25 20:12:54 PST 2016
https://issues.dlang.org/show_bug.cgi?id=15608
Issue ID: 15608
Summary: extern(C++) mangling problem
Product: D
Version: D2
Hardware: x86_64
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: turkeyman at gmail.com
C++:
class IComponent
{
virtual Variant CallMethod(String method, Slice<const Variant> args) = 0;
};
class Component : public IComponent
{
Variant CallMethod(String method, Slice<const Variant> args) override final;
};
D:
extern(C++) interface IComponent
{
Variant CallMethod(String method, Slice!(const(Variant)) args);
}
extern (C++) class Component : IComponent
{
final override Variant CallMethod(String method, Slice!(const(Variant))
args);
}
I think override + final is messing up the C++ mangling.
C++:
?CallMethod at Component@ep@@UEAA?AUVariant at 2@U?$BaseString at D@2 at U?$Slice@$$CBUVariant at ep@@@2@@Z
D:
?CallMethod at Component@ep@@QEAA?AUVariant at 2@U?$BaseString at D@2 at U?$Slice at UVariant@ep@@@2@@Z
'U' is a 'Q', and C++ has a bonus '$$CB'
--
More information about the Digitalmars-d-bugs
mailing list