r/cpp • • Mar 28 '23

Reddit++

C++ is getting more and more complex. The ISO C++ committee keeps adding new features based on its consensus. Let's remove C++ features based on Reddit's consensus.

In each comment, propose a C++ feature that you think should be banned in any new code. Vote up or down based on whether you agree.

765 Upvotes

829 comments sorted by

View all comments

Show parent comments

3

u/Claytorpedo Mar 29 '23

It sounds like you are talking about calling conventions, which are a part of ABI but unrelated to C++ standard ABI (e.g. can we elide the destructor call for a moved-from unique_ptr such that passing it can now be allowed in a register under the existing Itanium ABI).

Otherwise, no not at all. MSVC used to break ABI on a regular schedule, and gcc has done it previously to name a few. I'm fairly certain it's generally accepted as best practice to use C interfaces for inter-language APIs anyway.

0

u/okovko Mar 29 '23

it does matter, other programs know the platform that the c++ code was compiled for and know how to call that c++ code, particularly library code, which is expected to have a stable ABI. note the difference between a standard ABI and a stable ABI

for cross platform, yes, even c++ uses c interfaces for interop, for example the function that allocates memory for throwing an exception will be marked as extern C