4#ifndef TETL_LINALG_SCALED_SCALAR_HPP
5#define TETL_LINALG_SCALED_SCALAR_HPP
7#include <etl/_linalg/proxy_reference.hpp>
8#include <etl/_type_traits/declval.hpp>
12template <
typename ScalingFactor,
typename ReferenceValue>
13concept scalable =
requires { declval<ScalingFactor>() * declval<ReferenceValue>(); };
15template <
typename ScalingFactor,
typename Reference,
typename ReferenceValue>
16 requires(scalable<ScalingFactor, ReferenceValue>)
18 : proxy_reference<Reference, ReferenceValue, scaled_scalar<ScalingFactor, Reference, ReferenceValue>> {
19 using value_type =
decltype(declval<ScalingFactor>() * ReferenceValue(declval<Reference>()));
21 constexpr explicit scaled_scalar(ScalingFactor
const& scalingFactor, Reference
const& reference)
22 : proxy_reference<Reference, ReferenceValue, scaled_scalar<ScalingFactor, Reference, ReferenceValue>>{reference}
23 , _scalingFactor{scalingFactor}
27 [[nodiscard]]
constexpr auto to_value(Reference reference)
const -> value_type
29 return _scalingFactor * ReferenceValue(reference);
33 ScalingFactor _scalingFactor;
Definition accessor_conjugate.hpp:13
Definition adjacent_find.hpp:9