7#ifndef INCLUDE_GUARD_ARENE_BASE_STDLIB_INCLUDE_STDLIB_DETAIL_INNER_PRODUCT_HPP_
8#define INCLUDE_GUARD_ARENE_BASE_STDLIB_INCLUDE_STDLIB_DETAIL_INNER_PRODUCT_HPP_
17#include "arene/base/algorithm/detail/generalized_transform_reduce.hpp"
18#include "arene/base/algorithm/detail/traits.hpp"
19#include "arene/base/constraints.hpp"
20#include "arene/base/stdlib_choice/enable_if.hpp"
21#include "arene/base/stdlib_choice/is_assignable.hpp"
22#include "arene/base/stdlib_choice/is_move_constructible.hpp"
23#include "arene/base/stdlib_choice/move.hpp"
24#include "arene/base/stdlib_choice/multiplies.hpp"
25#include "arene/base/stdlib_choice/plus.hpp"
26#include "arene/base/type_traits/is_copyable.hpp"
27#include "arene/base/type_traits/is_invocable.hpp"
28#include "arene/base/type_traits/iterator_category_traits.hpp"
45 using value_type = Value;
57 template <
class Result>
58 static constexpr auto assign(value_type& acc, Result&& result)
noexcept(
61 acc = std::forward<Result>(result);
68 static constexpr auto access(value_type& acc)
noexcept -> Value& {
return acc; }
72 static constexpr auto access(value_type&& acc)
noexcept -> Value&& {
return std::move(acc); }
144 >::
value>> =
nullptr>
reduce value policy for a C++14 compliant implementation
Definition inner_product.hpp:42
static constexpr auto assign(value_type &acc, Result &&result) noexcept(std::is_nothrow_assignable< Value &, Result && >::value) -> void
generalized assignment
Definition inner_product.hpp:58
static constexpr auto access(value_type &&acc) noexcept -> Value &&
generalized access
Definition inner_product.hpp:72
static constexpr auto access(value_type &acc) noexcept -> Value &
generalized access
Definition inner_product.hpp:68
Definition inner_product.hpp:31
constexpr auto operator()(::arene::base::result< void, E > const &value) const noexcept(noexcept(hash< E >{}(std::declval< E const & >()))) -> std::size_t
Calculate the hash of a result.
Definition result.hpp:1827