Why can't we use strings in C++ methods?

Dadoum dadoum at protonmail.com
Sat Nov 4 13:51:20 UTC 2023


On Saturday, 4 November 2023 at 13:45:56 UTC, Emmanuel Danso 
Nyarko wrote:
> [...]
>
> There is a syntax disagreement here that's why the D compiler 
> is instantly stopping you from doing any symbol generated 
> interaction with string in C++ interop. C++ doesn't know 
> 'string' and C++ mangles with parameters and so passing string 
> will make string get involved with the symbol generation and 
> since string(std::string) in C++ is a template library, the D 
> compiler stops you from engaging with 'string'

I don't think it's related to the existence of std::string at all 
since all dynamic array types are forbidden.

```d
extern (C++) void hello(ubyte[] arg) {
         import std.stdio;
         writeln(arg);
}
```

also fails to compile while this works:

```d
extern (C) void hello(ubyte[] arg) {
         import std.stdio;
         writeln(arg);
}
```




More information about the Digitalmars-d-learn mailing list