Why can't we transpile C++ to D?

evilrat evilrat666 at gmail.com
Thu Jun 10 16:48:03 UTC 2021


On Thursday, 10 June 2021 at 15:57:44 UTC, Imperatorn wrote:
> On Thursday, 10 June 2021 at 15:09:02 UTC, Tejas wrote:
>> Sorry, I'm rather ignorant when it comes to this, but why 
>> can't we use 
>> [pegged](https://github.com/PhilippeSigaud/Pegged) to 
>> transpile C++ code to D? Then we won't need a nogc compatible 
>> std library and so many other things could get easier, like 
>> getting legacy code to use Dlang. It might not be worth it for 
>> C+17 and beyond, but older codebases could benefit 
>> significantly, right?
>
> I'm guessing it's hard because of the grammar

Well, still a grammar, though it was my little WTF moment.

for example this C++ grammar(often used in STL) where min is 
simple minimum function

```cpp
float min(float l, float r)
{
    return (l < r) ? l : r;
}
```

```cpp
float foo(float a, float b) {
    return (min)(a,b);
}
```

and this direct translation to D doesn't works
```d
float foo(float a, float b) {
    return (min)(a,b); // Error: C style cast illegal, use 
`cast(min)(a , b)`
}
```

but this does
```d
float foo(float a, float b) {
    return (&min)(a,b); // ok
}
```


More information about the Digitalmars-d-learn mailing list