C++ Logo


Advanced search

Re: [important] C++ Zero-Overhead exception proposal

From: Denis Kotov <redradist_at_[hidden]>
Date: Mon, 19 Oct 2020 23:40:57 +0300
>> but returning large structs isn't exactly
"zero-overhead" either

Why ? Zero-overhead is all about if it is not possible to do better by hand
... And it is not possible to return better by hand !!
With `exception_ptr` you enforce all to use dynamic memory management, but
to return an object directly is more flexible because the user can return
struct, it can return pointer to struct, it can return raw integer ... This
solution more flexible for embedded as well as for general programming

I just want in C++ Zero-overhead with ability to choose how exactly I want
return error (by pointer or by value)

On Mon, 19 Oct 2020 at 20:49, Jason McKesson via Std-Discussion <
std-discussion_at_[hidden]> wrote:

> FYI: You need to reply to the list to keep the discussion on the list.
> On Mon, Oct 19, 2020 at 3:49 AM Denis Kotov <redradist_at_[hidden]> wrote:
> >
> > >> Being a "raw integer" is what gives us "zero overhead" (also,
> > `std::error` is not a "raw integer"; it's two pointers in size)
> >
> > "Zero-overhead abstraction - don't pay for what you don't use, what you
> use is as efficient as you can reasonably write by hand" from side of Herb
> Sutter https://youtu.be/ARYP83yNAWk?t=328
> > You cannot write more efficiently than that:
> > ```cppunion SubscribeResult { Subscription res; SubscriptionError err;
> > };```
> >
> > Returning raw integer as error code is also "Zero-overhead", but it is
> applied for some specific case ...
> >
> > What if with error you want to return data for this error ?
> > It will become very hard to extend such an error system ..
> `std::error` as proposed by P0709 ***is not an integer***. It is a
> specialized type that can store integer values, but it can also store
> any data structure through an `exception_ptr`. Yes, they must be
> dynamically-allocated, but returning large structs isn't exactly
> "zero-overhead" either. This is especially true when throwing them.
> The functionality you want can already be done with the existing
> P0709, just not in quite as convenient a way.
> --
> Std-Discussion mailing list
> Std-Discussion_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

*Best RegardsDenis Kotov*

Received on 2020-10-19 15:41:10