Date: Thu, 18 Jul 2024 08:25:15 -0700
On Thursday 18 July 2024 07:32:25 GMT-7 Hans via Std-Proposals wrote:
> (you) __declspec (dllexport) bool whatever (std::string &) { ... }
>
> (compiler) "Warning C9002: using unstable type in DLL interface."
>
> This, again informs them that there is a problem. Now they can look up
> C9002 and learn about ABI differences.
Once again: who benefits from this?
std::string is already stable inside of one Standard Library. Your idea is
meant to allow the implementations to update those freely... but do they want
to? As a user of their libraries, I definitely DO NOT want them to break
std::string. std::stable::string remaining stable is irrelevant to me. I want
std::string to remain stable within this Standard Library implementation.
So given it remains compatible with past and future versions, why do we need
std::stable::string?
At best that would allow libstdc++ and libc++ to exchange data. But do note
this was EXPLICITLY rejected as a design goal for libc++. When it was created,
it was created with a specific set of classes that are compatible with libstdc+
+ but they do not include std::string (it's just typeinfo and std::exception).
Have you asked them if they want to make and maintain forever a layer
compatible between the two? If they don't want that, you can expect a negative
vote on your paper from their maintainers when it comes to the committee.
> (you) __declspec (dllexport) bool whatever (std::string &) { ... }
>
> (compiler) "Warning C9002: using unstable type in DLL interface."
>
> This, again informs them that there is a problem. Now they can look up
> C9002 and learn about ABI differences.
Once again: who benefits from this?
std::string is already stable inside of one Standard Library. Your idea is
meant to allow the implementations to update those freely... but do they want
to? As a user of their libraries, I definitely DO NOT want them to break
std::string. std::stable::string remaining stable is irrelevant to me. I want
std::string to remain stable within this Standard Library implementation.
So given it remains compatible with past and future versions, why do we need
std::stable::string?
At best that would allow libstdc++ and libc++ to exchange data. But do note
this was EXPLICITLY rejected as a design goal for libc++. When it was created,
it was created with a specific set of classes that are compatible with libstdc+
+ but they do not include std::string (it's just typeinfo and std::exception).
Have you asked them if they want to make and maintain forever a layer
compatible between the two? If they don't want that, you can expect a negative
vote on your paper from their maintainers when it comes to the committee.
-- Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org Principal Engineer - Intel DCAI Platform & System Engineering
Received on 2024-07-18 15:25:20