proxsuite
0.6.7
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
invocable.hpp
Go to the documentation of this file.
1
#ifndef VEG_INVOCABLE_HPP_GVSWRKAYS
2
#define VEG_INVOCABLE_HPP_GVSWRKAYS
3
4
#include "
proxsuite/linalg/veg/type_traits/core.hpp
"
5
#include "
proxsuite/linalg/veg/type_traits/constructible.hpp
"
6
#include "
proxsuite/linalg/veg/internal/prologue.hpp
"
7
8
namespace
proxsuite
{
9
namespace
linalg {
10
namespace
veg {
11
namespace
_detail {
12
namespace
_meta {
13
template
<
typename
Fn,
typename
... Args>
14
using
call_expr
=
decltype
(
VEG_DECLVAL
(
Fn
&&)(
VEG_DECLVAL
(
Args
&&)...));
15
}
// namespace _meta
16
}
// namespace _detail
17
namespace
meta {
18
template
<
typename
Fn
,
typename
...
Args
>
19
using
invoke_result_t
=
20
meta::detected_t
<
_detail::_meta::call_expr
,
Fn
&&,
Args
&&...>;
21
}
// namespace meta
22
23
namespace
concepts {
24
VEG_CONCEPT_EXPR
((
typename
Fn
,
typename
Ret,
typename
...
Args
),
25
(
Fn
, Ret,
Args
...),
26
fn_once
,
27
VEG_DECLVAL
(
Fn
&&)(
VEG_DECLVAL
(
Args
&&)...),
28
VEG_CONCEPT
(
same<ExprType, Ret>
));
29
30
VEG_CONCEPT_EXPR
((
typename
Fn
,
typename
Ret,
typename
...
Args
),
31
(
Fn
, Ret,
Args
...),
32
fn_mut
,
33
VEG_DECLVAL
(
Fn
&)(
VEG_DECLVAL
(
Args
&&)...),
34
VEG_CONCEPT
(
same<ExprType, Ret>
));
35
36
VEG_CONCEPT_EXPR
((
typename
Fn
,
typename
Ret,
typename
...
Args
),
37
(
Fn
, Ret,
Args
...),
38
fn,
39
VEG_DECLVAL
(
Fn
const
&)(
VEG_DECLVAL
(
Args
&&)...),
40
VEG_CONCEPT
(
same<ExprType, Ret>
));
41
}
// namespace concepts
42
}
// namespace veg
43
}
// namespace linalg
44
}
// namespace proxsuite
45
46
#include "
proxsuite/linalg/veg/internal/epilogue.hpp
"
47
#endif
/* end of include guard VEG_INVOCABLE_HPP_GVSWRKAYS */
constructible.hpp
epilogue.hpp
VEG_CONCEPT_EXPR
#define VEG_CONCEPT_EXPR(Tpl, TplNames, Name, Expr,...)
Definition
macros.hpp:272
VEG_CONCEPT
#define VEG_CONCEPT(...)
Definition
macros.hpp:1243
VEG_DECLVAL
#define VEG_DECLVAL(...)
Definition
macros.hpp:131
proxsuite::linalg::veg::_detail::_meta::call_expr
decltype(VEG_DECLVAL(Fn &&)(VEG_DECLVAL(Args &&)...)) call_expr
Definition
invocable.hpp:14
proxsuite
Definition
common.hpp:14
prologue.hpp
proxsuite::linalg::veg::Ref
Definition
ref.hpp:30
core.hpp
include
proxsuite
linalg
veg
type_traits
invocable.hpp
Generated by
1.10.0