Boost logo

Boost :

From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2019-05-27 12:20:06


Hi JeanHeyd,

Thanks for creating and sharing the library. I must admit that I followed
it for a while, both in Boost and the LEWG proposal and I was never able to
grasp what it is for.

Now, this time, the docs seem to be a lot more clear. We have a good
motivation page:
https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr/overview.adoc
I really appreciate it. The just edited initial page is helpful. I also
recommend putting this text in the intro page: "the C++11 abstraction for
passing smart pointers as parameters to T** arguments" -- it helped me a
lot to understand what the library is for.

And let me make sure if I actually grasped the scope of the library. Let me
make an inverse statement. "Unless I am using APIs that take T**, this
out_ptr will be of no use to me". Is this statement correct?

I have one immediate comment. a lot of stuff is performed in the destructor
of out_ptr_t:
https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr/reference/out_ptr.adoc#destructors

In fact, it calls constructors of smart pointers (with custom
deleters) that can potentially throw exceptions. This is disturbing that
the destructor of out_ptr_t can silently throw an exception. And in such
case, we do not know what happens. Your destructor is not marked
`noexcept`: in the Standard Library it means it obtains `noexcept`
silently. In Boost it means nothing special, so whether it is noexcept or
not depends of the internal details of the class implementation, so you are
recommended to declare explicitly either `noexcept` or `noexcept(false)`.

Regards,
&rzej;

pon., 27 maj 2019 o 08:01 JeanHeyd Meneide via Boost <boost_at_[hidden]>
napisał(a):

> Dear Boost Community,
>
> After a lot of work and discussion in-person, via e-mail, and on the
> Slack, I would like to ask for the library boost.out_ptr
> <https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr.adoc> --
> targeting C++11 -- to be endorsed for review.
>
> Documentation: ascii doc-ready and readable on GitHub
> <https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr.adoc>
> Repository: GitHub <https://github.com/ThePhD/out_ptr>
> Standards Proposal: p1132
> <https://thephd.github.io/vendor/future_cxx/papers/d1132.html> (accepted
> for and targeting C++20)
>
> boost.out_ptr is a library for making it easy to interoperate between
> smart pointers and traditional C-style initialization and allocation
> interfaces. It also enables doing so in a way that allows library authors
> to opt-into speed optimizations for their smart pointers that give them
> performance equivalent to typical C pointers (see benchmarks
> <
> https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr/benchmarks.adoc
> >
> and the Standard C++ proposal
> <https://thephd.github.io/vendor/future_cxx/papers/d1132.html#perf> for
> more details). Many thanks to the in-person discussion during Library in a
> Week at C++Now, which helped shape the implementation and yield the final
> Rationale
> <https://github.com/ThePhD/out_ptr/blob/master/docs/out_ptr/rationale.adoc
> >.
> Many thanks to Ezra (eracpp) for a lot of the quick, easy-to-read examples
> that became part of the documentation.
>
> Sincerely,
> JeanHeyd Meneide
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk