DIP61: redone to do extern(C++,N) syntax
via Digitalmars-d
digitalmars-d at puremagic.com
Mon Apr 28 16:30:39 PDT 2014
On Monday, 28 April 2014 at 19:32:10 UTC, Walter Bright wrote:
> On 4/28/2014 4:29 AM, "Ola Fosheim Grøstad"
> <ola.fosheim.grostad+dlang at gmail.com>" wrote:
> No. Even though they are the same function as far as the
> signatures are concerned, they are different functions as far
> as the D type system is concerned, and hence the call is
> ambiguous. You'll have to qualify by framework1.std.something()
> or framework2.std.something().
So you have to choose between framework1 and 2's version if
std::string when building your own class, an then cast back and
forth between the different framework bindings even though the
actual type is the same? Isn't that tedious?
>> import.std();
>> … std.something(); // namespace encapsulation broken or fail?
>> … std.coolstuff();
>
> No problem, std.d overrides because it is imported directly and
> so std is in the current scope. The current scope overrides
> imported scopes.
But I think that it is a problem that std.something is silently
rebound to a different function.
> Still no problem. Qualifying it with framework2 says which one
> you want.
The problem is that you are forced to qualify the D-binding
rather than the path of the cpp function. This will only work out
ok if different framework authors cooperate.
>> Right, but I want to be sure that the type-system sees all
>> externs with the same
>> signature as the same type.
>
> Remember, a C++ signature is the same as its type in C++, but
> that is not true of D.
And that makes it tedious to interact with C++?
But for what gain?
More information about the Digitalmars-d
mailing list