forward_like overloads

Synopses

Declared in <bslmf_util.h>

Forward the specified t argument as a non‐`const` rvalue reference when t_MODEL is an rvalue reference type.

template<
    class t_MODEL,
    class t_TYPE>
[[nodiscard]]
constexpr
static
bsl::remove_reference<t_TYPE>::type&&
forward_like(
    t_TYPE&& t,
    void* = 0) noexcept
requires !bsl::is_lvalue_reference<t_MODEL>::value &&
          !bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;

Forward the specified t argument as a const rvalue reference when t_MODEL is an rvalue reference type.

template<
    class t_MODEL,
    class t_TYPE>
[[nodiscard]]
constexpr
static
bsl::remove_reference<t_TYPE>::type const&&
forward_like(
    t_TYPE&& t,
    void* = 0) noexcept
requires !bsl::is_lvalue_reference<t_MODEL>::value &&
          bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;

Forward the specified t argument as a non‐`const` lvalue reference when t_MODEL is an lvalue reference type.

template<
    class t_MODEL,
    class t_TYPE>
[[nodiscard]]
constexpr
static
t_TYPE&
forward_like(
    t_TYPE&& t,
    void* = 0) noexcept
requires bsl::is_lvalue_reference<t_MODEL>::value &&
          !bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;

Forward the specified t argument as a const lvalue reference when t_MODEL is a const lvalue reference type.

template<
    class t_MODEL,
    class t_TYPE>
[[nodiscard]]
constexpr
static
bsl::remove_reference<t_TYPE>::type const&
forward_like(
    t_TYPE&& t,
    void* = 0) noexcept
requires bsl::is_lvalue_reference<t_MODEL>::value &&
          bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;

Return Value

Note

The return value should not be discarded.

Created with MrDocs