Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions docs/coverage-exemptions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,3 @@ fn::recover_t::apply::operator(): as above
fn::transform_error_t::apply::operator(): as above
fn::transform_t::apply::operator(): as above
fn::value_or_t::apply::operator(): as above

fn::expected< void, Err >::copack_value: void specialization artifact, cannot have a copack of void
fn::just< void >::emplace: void specialization artifact, cannot emplace void
fn::just< void >::v_: void specialization artifact, has no payload
fn::just< void >::~just: void specialization artifact, handled by primary template
fn::optional< T & >::const_iterator: reference specialization artifact, only has iterator
fn::optional< T & >::copack_value: reference specialization artifact, cannot copack a reference
46 changes: 21 additions & 25 deletions docs/reference/conjoin.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,54 +33,50 @@ The binary conjunction each carrier declares; `conjoin` is its n-ary fold.

```cpp {title: "fn::operator&"}
template <typename Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (1)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (1)
constexpr auto operator&(Lh &&, Rh &&rh) -> std::remove_cvref_t<Rh>; // (2)
constexpr auto operator&(Lh &&lh, Rh &&) -> std::remove_cvref_t<Lh>; // (3)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (4)

template <typename Lh, some_expected Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (2)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (5)

template <some_expected Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (3)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (6)

template <typename Lh, some_expected_void Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh) -> expected<typename std::remove_cvref_t<Lh>::value_type, typename std::remove_cvref_t<Rh>::error_type>; // (4)
constexpr auto operator&(Lh &&lh, Rh &&rh) -> expected<typename std::remove_cvref_t<Lh>::value_type, typename std::remove_cvref_t<Rh>::error_type>; // (7)

template <some_expected_void Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh) -> expected<typename std::remove_cvref_t<Rh>::value_type, typename std::remove_cvref_t<Lh>::error_type>; // (5)
constexpr auto operator&(Lh &&lh, Rh &&rh) -> expected<typename std::remove_cvref_t<Rh>::value_type, typename std::remove_cvref_t<Lh>::error_type>; // (8)

template <typename Lh, some_expected Rh>
constexpr auto operator&(Lh &&, Rh &&rh); // (6)
constexpr auto operator&(Lh &&, Rh &&rh); // (9)

template <some_expected Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&); // (7)
constexpr auto operator&(Lh &&lh, Rh &&); // (10)

template <some_optional Lh, some_optional Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (8)

template <typename Lh, some_optional Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (9)

template <some_optional Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (10)

template <typename Lh, some_optional Rh>
constexpr auto operator&(Lh &&, Rh &&rh); // (11)
template <typename Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (11)
constexpr auto operator&(Lh &&, Rh &&rh) -> std::remove_cvref_t<Rh>; // (12)
constexpr auto operator&(Lh &&lh, Rh &&) -> std::remove_cvref_t<Lh>; // (13)

template <some_optional Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&); // (12)
template <some_optional Lh, some_optional Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (14)

template <typename Lh, some_optional Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (13)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (15)

template <some_optional Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&rh); // (14)
constexpr auto operator&(Lh &&lh, Rh &&rh); // (16)

template <typename Lh, some_optional Rh>
constexpr auto operator&(Lh &&, Rh &&rh); // (15)
constexpr auto operator&(Lh &&, Rh &&rh); // (17)

template <some_optional Lh, typename Rh>
constexpr auto operator&(Lh &&lh, Rh &&); // (16)
constexpr auto operator&(Lh &&lh, Rh &&); // (18)

constexpr auto operator&(auto &&lh, auto &&rh); // (17)
constexpr auto operator&(auto &&lh, auto &&rh); // (19)
```

:include-doxygen-doc: fn::operator& { args: "Lh &&, Rh &&" }
Expand Down
15 changes: 10 additions & 5 deletions docs/reference/disjoin.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,24 @@ The binary disjunction each carrier declares; `disjoin` is its n-ary fold.

```cpp {title: "fn::operator|"}
template <typename Lh, typename Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (1)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (1)
constexpr auto operator|(Lh &&, Rh &&) -> ::fn::just<void>; // (2)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (3)

template <some_expected_void Lh, some_expected_void Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (2)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (4)

template <typename Lh, typename Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (5)

template <some_expected_void Lh, typename Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (3)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (6)

template <typename Lh, some_expected_void Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (4)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (7)

template <some_optional Lh, some_optional Rh>
constexpr auto operator|(Lh &&lh, Rh &&rh); // (5)
constexpr auto operator|(Lh &&lh, Rh &&rh); // (8)
```

:include-doxygen-doc: fn::operator| { args: "Lh &&, Rh &&" }
Expand Down