BloombergLP::bslmf::Util::forward_like

forward_like overloads

Synopses

Declared in <bslmf_util.h>

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) noexcept
requires bsl::is_lvalue_reference<t_MODEL>::value &&
          bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;
» more...

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) noexcept
requires bsl::is_lvalue_reference<t_MODEL>::value &&
          !bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;
» more...

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) noexcept
requires !bsl::is_lvalue_reference<t_MODEL>::value &&
          bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;
» more...

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) noexcept
requires !bsl::is_lvalue_reference<t_MODEL>::value &&
          !bsl::is_const<
            typename bsl::remove_reference<t_MODEL>::type>::value;
» more...

Return Value

  • t as a const lvalue reference
  • t as a non-const lvalue reference
  • t as a const rvalue reference
  • t as a non-const rvalue reference

NOTE

The return value should not be discarded.

Parameters

NameDescription
targument to forward