Loading [MathJax]/extensions/TeX/AMSsymbols.js
Automatic Differentiation
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
is_var.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_META_IS_VAR_HPP
2#define STAN_MATH_PRIM_META_IS_VAR_HPP
3
5
6#include <type_traits>
7
8namespace stan {
13template <typename T, typename = void>
14struct is_var : std::false_type {};
15
16template <typename T>
18
19template <typename T>
20inline constexpr bool is_var_v = is_var<T>::value;
21
22namespace internal {
23
24template <typename... Types>
26 static constexpr bool value
28};
29
30template <typename... Types>
31struct is_any_var_scalar_impl<std::tuple<Types...>> {
32 static constexpr bool value
34};
35
36template <typename T, typename... VecArgs>
37struct is_any_var_scalar_impl<std::vector<T, VecArgs...>> {
39};
40
41} // namespace internal
42
43template <typename... Types>
45 : std::disjunction<
46 internal::is_any_var_scalar_impl<std::decay_t<Types>>...> {};
47
48template <typename... Types>
49constexpr bool is_any_var_scalar_v
51
52namespace internal {
53template <typename... Types>
55 static constexpr bool value
57};
58template <typename... Types>
59struct is_all_var_scalar_impl<std::tuple<Types...>> {
60 static constexpr bool value
62};
63
64template <typename... Types, typename... VecArgs>
65struct is_all_var_scalar_impl<std::vector<std::tuple<Types...>, VecArgs...>> {
66 static constexpr bool value
68};
69
70} // namespace internal
71
72template <typename... Types>
74 : std::disjunction<
75 internal::is_all_var_scalar_impl<std::decay_t<Types>>...> {};
76
77template <typename... Types>
78constexpr bool is_all_var_scalar_v
80
88template <typename T>
90
93template <typename T>
95
98template <typename... Types>
100
103template <typename... Types>
105
108template <typename... Types>
110
113template <typename... Types>
127template <template <class...> class TypeCheck, class... Check>
129 container_type_check_base<is_var, value_type_t, TypeCheck, Check...>>;
130
136template <template <class...> class TypeCheck, class... Check>
139
145template <template <class...> class TypeCheck, class... Check>
156template <typename T>
158
162template <typename... Types>
165
169template <typename... Types>
172
175template <typename T>
177
180template <typename T>
183
187template <typename... Types>
190
194template <typename... Types>
197
201template <typename... Types>
206template <typename T>
207struct value_type<T, std::enable_if_t<is_var<T>::value>> {
208 using type = typename std::decay_t<T>::value_type;
209};
210
211} // namespace stan
212#endif
typename value_type< T >::type value_type_t
Helper function for accessing underlying type.
require_all_not_t< is_var< scalar_type_t< std::decay_t< Types > > >... > require_all_not_st_var
Require none of the scalar types satisfy is_var.
Definition is_var.hpp:203
require_not_t< is_var< std::decay_t< T > > > require_not_var_t
Require type does not satisfy is_var.
Definition is_var.hpp:94
require_not_t< is_var< scalar_type_t< std::decay_t< T > > > > require_not_st_var
Require scalar type does not satisfy is_var.
Definition is_var.hpp:182
require_t< container_type_check_base< is_var, value_type_t, TypeCheck, Check... > > require_var_vt
Require type satisfies is_var.
Definition is_var.hpp:129
require_all_t< is_var< std::decay_t< Types > >... > require_all_var_t
Require all of the types satisfy is_var.
Definition is_var.hpp:99
require_any_t< is_var< value_type_t< std::decay_t< Types > > >... > require_any_vt_var
Require any of the value_types satisfy is_var.
Definition is_var.hpp:164
require_all_not_t< is_var< value_type_t< std::decay_t< Types > > >... > require_all_not_vt_var
Require none of the value_types satisfy is_var.
Definition is_var.hpp:171
require_any_not_t< is_var< std::decay_t< Types > >... > require_any_not_var_t
Require at least one of the types do not satisfy is_var.
Definition is_var.hpp:114
require_not_t< is_var< value_type_t< std::decay_t< T > > > > require_not_vt_var
Require value type does not satisfy is_var.
Definition is_var.hpp:157
require_any_t< is_var< std::decay_t< Types > >... > require_any_var_t
Require any of the types satisfy is_var.
Definition is_var.hpp:104
require_any_t< container_type_check_base< is_var, value_type_t, TypeCheck, Check >... > require_any_var_vt
Require any of the types satisfy is_var.
Definition is_var.hpp:138
require_t< is_var< scalar_type_t< std::decay_t< T > > > > require_st_var
Require scalar_type satisfies is_var.
Definition is_var.hpp:176
require_t< is_var< std::decay_t< T > > > require_var_t
Require type satisfies is_var.
Definition is_var.hpp:89
require_all_t< is_var< scalar_type_t< std::decay_t< Types > > >... > require_all_st_var
Require all of the scalar types satisfy is_var.
Definition is_var.hpp:189
require_all_not_t< is_var< std::decay_t< Types > >... > require_all_not_var_t
Require none of the types satisfy is_var.
Definition is_var.hpp:109
require_all_t< container_type_check_base< is_var, value_type_t, TypeCheck, Check >... > require_all_var_vt
Require all of the types satisfy is_var.
Definition is_var.hpp:147
require_any_t< is_var< scalar_type_t< std::decay_t< Types > > >... > require_any_st_var
Require any of the scalar types satisfy is_var.
Definition is_var.hpp:196
std::enable_if_t<!Check::value > require_not_t
If condition is false, template is disabled.
std::enable_if_t< math::disjunction< Checks... >::value > require_any_t
If any condition is true, template is enabled.
constexpr bool is_all_var_scalar_v
Definition is_var.hpp:79
std::enable_if_t<!math::disjunction< Checks... >::value > require_all_not_t
If all conditions are false, template is enabled.
bool_constant< math::conjunction< ContainerCheck< std::decay_t< Check > >..., TypeCheck< ValueCheck< Check > >... >::value > container_type_check_base
Used as the base for checking whether a type is a container with an underlying scalar type.
constexpr bool is_any_var_scalar_v
Definition is_var.hpp:50
std::enable_if_t<!math::conjunction< Checks... >::value > require_any_not_t
If any condition is false, template is enabled.
constexpr bool is_var_v
Definition is_var.hpp:20
std::enable_if_t< Check::value > require_t
If condition is true, template is enabled.
std::enable_if_t< math::conjunction< Checks... >::value > require_all_t
If all conditions are true, template is enabled Returns a type void if all conditions are true and ot...
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
STL namespace.
Defines a static member named value which is defined to be false as the primitive scalar types cannot...
Definition is_var.hpp:14
typename std::decay_t< T >::value_type type
Definition is_var.hpp:208
Primary template class for metaprogram to compute the type of values stored in a container.