4#ifndef TETL_UTILITY_FORWARD_LIKE_HPP
5#define TETL_UTILITY_FORWARD_LIKE_HPP
7#include <etl/_type_traits/is_const.hpp>
8#include <etl/_type_traits/is_lvalue_reference.hpp>
9#include <etl/_type_traits/remove_reference.hpp>
10#include <etl/_utility/as_const.hpp>
11#include <etl/_utility/move.hpp>
15template <
typename T,
typename U>
18 constexpr auto isAddingConst =
etl::is_const_v<
etl::remove_reference_t<T>>;
20 if constexpr (
etl::is_lvalue_reference_v<T&&>) {
21 if constexpr (isAddingConst) {
22 return etl::as_const(x);
24 return static_cast<U&>(x);
27 if constexpr (isAddingConst) {
28 return etl::move(
etl::as_const(x));
Definition adjacent_find.hpp:9
constexpr auto forward_like(U &&x) noexcept -> auto &&
Definition forward_like.hpp:16