[Issue 15608] extern(C++) mangling problem

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jun 10 04:49:46 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=15608

Nicholas Wilson <iamthewilsonator at hotmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |iamthewilsonator at hotmail.co
                   |                            |m
         Resolution|---                         |WORKSFORME

--- Comment #5 from Nicholas Wilson <iamthewilsonator at hotmail.com> ---
god bolt MSVC v19.20:
template<typename T>
struct Slice {};
struct String {};
struct Variant {};

void foo();
class IComponent
{
  virtual Variant CallMethod(String method, Slice<const Variant> args) = 0;
};

class Component : public IComponent
{
public:
  Variant CallMethod(String method, Slice<const Variant> args) override final
  {
      foo();
      Variant v;
      return v;
  }
};

LDC beta:

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);
    pragma(msg, CallMethod.mangleof);
}

  extern(C++) struct Slice(T) {}
  extern(C++) struct String {}
  extern(C++) struct Variant {}

both give 

//?CallMethod at Component@@UEAA?AUVariant@@UString@@U?$Slice@$$CBUVariant@@@@@Z

--


More information about the Digitalmars-d-bugs mailing list