tinyopt
700
Tinyopt, a lightweight, header only optimization library
Toggle main menu visibility
Loading...
Searching...
No Matches
callable_traits.h
1
// Copyright 2026 Julien Michot.
2
// SPDX-License-Identifier: Apache-2.0
3
4
#pragma once
5
6
#include <tinyopt/traits/matrix_traits.h>
7
8
namespace
tinyopt::traits {
9
10
template
<
typename
Func,
typename
Param>
11
inline
constexpr
bool
is_scalar_cost_v =
12
std::is_invocable_v<Func, const Param &> &&
13
std::is_scalar_v<std::invoke_result_t<Func, const Param &>>;
14
15
template
<
typename
Func,
typename
Param,
typename
Scalar, Index Dims>
16
inline
constexpr
bool
accepts_gradient_v =
17
std::is_invocable_v<Func, const Param &, Vector<Scalar, Dims> &>;
18
19
template
<
typename
Func,
typename
Param,
typename
Scalar, Index Dims>
20
inline
constexpr
bool
accepts_hessian_v =
21
std::is_invocable_v<Func, const Param &, Vector<Scalar, Dims> &, Matrix<Scalar, Dims, Dims> &>;
22
23
}
// namespace tinyopt::traits
include
tinyopt
traits
callable_traits.h
Generated by
1.18.0