# `base`

Implements the base class of most policy classes defining the narrow observer policies.

Requires: Nothing.

Namespace: `BOOST_OUTCOME_V2_NAMESPACE::policy`

Header: `<boost/outcome/policy/base.hpp>`

### Protected member functions

#### Special

1. `static void _ub(Impl &&)`

   Special function which causes noticeable hard undefined behaviour.

#### Observers

1. `static bool _has_value(Impl &&) noexcept`

   Returns true if a value is present in the implementation passed in. Constexpr, never throws.

2. `static bool _has_error(Impl &&) noexcept`

   Returns true if an error is present in the implementation passed in. Constexpr, never throws.

3. `static bool _has_exception(Impl &&) noexcept`

   Returns true if an exception is present in the implementation passed in. Constexpr, never throws.

4. `static bool _has_error_is_errno(Impl &&) noexcept`

   Returns true if the error code in the implementation passed in has a domain or category matching that of POSIX `errno`. Constexpr, never throws.

5. `static auto &&_value(Impl &&) noexcept`

   Returns a reference to the value in the implementation passed in. Constexpr, never throws.

6. `static auto &&_error(Impl &&) noexcept`

   Returns a reference to the error in the implementation passed in. Constexpr, never throws.

7. `static auto &&_exception(Impl &&) noexcept`

   Returns a reference to the exception in the implementation passed in. Constexpr, never throws.

#### Modifiers

1. `static void _set_has_value(Impl &&, bool) noexcept`

   Sets whether the implementation has a value. Constexpr, never throws.

2. `static void _set_has_error(Impl &&, bool) noexcept`

   Sets whether the implementation has an error. Constexpr, never throws.

3. `static void _set_has_exception(Impl &&, bool) noexcept`

   Sets whether the implementation has an exception. Constexpr, never throws.

4. `static void _set_has_exception(Impl &&, bool) noexcept`

   Sets whether the implementation’s error code has a domain or category matching that of POSIX `errno`. Constexpr, never throws.

### Public member functions

1. `static void narrow_value_check(Impl &&) noexcept`

   Observer policy performing hard UB if no value is present. Constexpr, never throws.

2. `static void narrow_error_check(Impl &&) noexcept`

   Observer policy performing hard UB if no error is present. Constexpr, never throws.

3. `static void narrow_exception_check(Impl &&) noexcept`

   Observer policy performing hard UB if no exception is present. Constexpr, never throws.

4. `static void on_outcome_construction(T *, U &&) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the implicit constructors of `basic_outcome`.

5. `static void on_outcome_construction(T *, U &&, V &&) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the implicit constructors of `basic_outcome`.

6. `static void on_outcome_copy_construction(T *, U &&) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the converting copy constructors of `basic_outcome`.

7. `static void on_outcome_copy_construction(T *, U &&, V &&) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the converting copy constructors of `basic_outcome`.

8. `static void on_outcome_in_place_construction(T *, in_place_type_t<U>, Args &&...) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the in-place constructors of `basic_outcome`.

9. `static void on_outcome_move_construction(T *, U &&) noexcept`

   (>= Outcome v2.2.0) Hook invoked by the converting move constructors of `basic_outcome`.

10. `static void on_outcome_move_construction(T *, U &&, V &&) noexcept`

    (>= Outcome v2.2.0) Hook invoked by the converting move constructors of `basic_outcome`.

11. `static void on_result_construction(T *, U &&) noexcept`

    (>= Outcome v2.2.0) Hook invoked by the implicit constructors of `basic_result`.

12. `static void on_result_copy_construction(T *, U &&) noexcept`

    (>= Outcome v2.2.0) Hook invoked by the converting copy constructors of `basic_result`.

13. `static void on_result_in_place_construction(T *, in_place_type_t<U>, Args &&...) noexcept`

    (>= Outcome v2.2.0) Hook invoked by the in-place constructors of `basic_result`.

14. `static void on_result_move_construction(T *, U &&) noexcept`

    (>= Outcome v2.2.0) Hook invoked by the converting move constructors of `basic_result`.

Last revised: January 22, 2019 at 01:11:40 UTC