Boost logo

Boost :

Subject: Re: [boost] [outcome v2] Please comment on new result<T, EC> reference API docs
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2017-06-21 22:25:07


>> Do I need to write more detail for the APIs, or is what is there enough?
>
> You could be more detailed in places. For example,
>
> ""
> Function template outcome::policy::throw_directly::narrow_value_check
>
> template <class Impl>
> static constexpr void narrow_value_check(Impl* self) noexcept;
>
> Performs a narrow check of state, used in the assume_value() functions
> ""
>
> You have to say what happens, that is, you're missing the Effects clause
> here.

Great point.

> Another minor comment:
>
> noexcept(noexcept(value_type(std::forward<T>(t)))&&noexcept(error_type(std::forward<U>(u))));
>
>
> This is usually written as
>
> noexcept(is_nothrow_constructible_v<value_type, T> &&
> is_nothrow_constructible_v<error_type, U>);

I was trying to work around an ICE on MSVC :(

But it's not working, so I'm putting it back to how you describe.

> If you haven't, you could look at the C++ standard to get an idea of how
> it specifies things, for example here: http://eel.is/c++draft/tuple.tuple
>
> SmartPtr uses a similar style too, f.ex. here:
>
> http://www.boost.org/doc/libs/develop/libs/smart_ptr/doc/html/smart_ptr.html#shared_ptr_members

I find writing this overspecification highly unnatural to me. It's not
how I think about APIs at all.

Thanks for your feedback Peter. Good to know this sort of documentation
is what people want. I'll keep pressing onwards.

Niall

-- 
ned Productions Limited Consulting
http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/

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