1#ifndef STAN_MATH_PRIM_META_IS_EIGEN_HPP
2#define STAN_MATH_PRIM_META_IS_EIGEN_HPP
21 :
bool_constant<is_base_pointer_convertible<Eigen::EigenBase, T>::value> {};
25template <
class,
class =
void>
31 std::
void_t<Eigen::internal::traits<std::decay_t<T>>>>
35template <
class,
class =
void>
54 std::enable_if_t<is_eigen<T>::value
55 && internal::has_scalar_trait<T>::value>> {
68 std::enable_if_t<is_eigen<T>::value
69 && internal::has_scalar_trait<T>::value>> {
70 using type =
typename std::decay_t<T>::Scalar;
82 std::enable_if_t<is_eigen<T>::value
83 && !internal::has_scalar_trait<T>::value>> {
85 typename Eigen::internal::traits<std::decay_t<T>>::Scalar>;
97 std::enable_if_t<is_eigen<T>::value
98 && !internal::has_scalar_trait<T>::value>> {
99 using type =
typename Eigen::internal::traits<std::decay_t<T>>::Scalar;
119template <
typename... Types>
124template <
typename... Types>
129template <
typename... Types>
135template <
typename... Types>
150template <
template <
class...>
class TypeCheck,
class... Check>
159template <
template <
class...>
class TypeCheck,
class... Check>
168template <
template <
class...>
class TypeCheck,
class... Check>
177template <
template <
class...>
class TypeCheck,
class... Check>
186template <
template <
class...>
class TypeCheck,
class... Check>
195template <
template <
class...>
class TypeCheck,
class... Check>
204template <
template <
class...>
class TypeCheck,
class... Check>
213template <
template <
class...>
class TypeCheck,
class... Check>
222template <
template <
class...>
class TypeCheck,
class... Check>
231template <
template <
class...>
class TypeCheck,
class... Check>
240template <
template <
class...>
class TypeCheck,
class... Check>
249template <
template <
class...>
class TypeCheck,
class... Check>
261 :
bool_constant<is_base_pointer_convertible<Eigen::ArrayBase, T>::value> {};
281template <
typename... Types>
305template <
template <
class...>
class TypeCheck,
class... Check>
308 TypeCheck, Check...>>;
314template <
typename T,
int Opts>
require_any_t< is_eigen_array< std::decay_t< Types > >... > require_any_eigen_array_t
Require any of the types satisfy is_eigen_array.
require_t< container_type_check_base< is_eigen_array, value_type_t, TypeCheck, Check... > > require_eigen_array_vt
Require type satisfies is_eigen_array.
require_t< is_eigen_array< std::decay_t< T > > > require_eigen_array_t
Require type satisfies is_eigen_array.
require_not_t< is_eigen_array< std::decay_t< T > > > require_not_eigen_array_t
Require type does not satisfy is_eigen_array.
require_all_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check >... > require_all_eigen_vt
Require all of the types satisfy is_eigen.
require_any_t< is_eigen< std::decay_t< Types > >... > require_any_eigen_t
Require any of the types satisfy is_eigen.
require_any_not_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check >... > require_any_not_eigen_st
Require at least one of the types does not satisfy is_eigen.
require_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check... > > require_eigen_vt
Require type satisfies is_eigen.
require_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check... > > require_eigen_st
Require type satisfies is_eigen.
require_all_t< is_eigen< std::decay_t< Types > >... > require_all_eigen_t
Require all of the types satisfy is_eigen.
require_t< is_eigen< std::decay_t< T > > > require_eigen_t
Require type satisfies is_eigen.
require_all_not_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check >... > require_all_not_eigen_st
Require none of the types satisfy is_eigen.
require_all_not_t< is_eigen< std::decay_t< Types > >... > require_all_not_eigen_t
Require none of the types satisfy is_eigen.
require_any_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check >... > require_any_eigen_st
Require any of the types satisfy is_eigen.
require_not_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check... > > require_not_eigen_vt
Require type does not satisfy is_eigen or.
require_all_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check >... > require_all_eigen_st
Require all of the types does not satisfy is_eigen.
require_not_t< container_type_check_base< is_eigen, scalar_type_t, TypeCheck, Check... > > require_not_eigen_st
Require type does not satisfy is_eigen.
require_not_t< is_eigen< std::decay_t< T > > > require_not_eigen_t
Require type does not satisfy is_eigen.
require_all_not_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check >... > require_all_not_eigen_vt
Require none of the types satisfy is_eigen.
require_any_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check >... > require_any_eigen_vt
Require any of the types satisfy is_eigen.
require_any_not_t< is_eigen< std::decay_t< Types > >... > require_any_not_eigen_t
Require at least one of the types do not satisfy is_eigen.
require_any_not_t< container_type_check_base< is_eigen, value_type_t, TypeCheck, Check >... > require_any_not_eigen_vt
Require at least one of the types does not satisfy is_eigen.
typename value_type< T >::type value_type_t
Helper function for accessing underlying type.
(Expert) Numerical traits for algorithmic differentiation variables.
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.
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.
typename scalar_type< T >::type scalar_type_t
std::enable_if_t<!math::conjunction< Checks... >::value > require_any_not_t
If any condition is false, template is enabled.
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...
typename make_void< Ts... >::type void_t
Utility metafunction that maps a sequence of any types to the type void This metafunction is used in ...
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Check if a type is derived from Eigen::ArrayBase
Check if a type is an Eigen::Map with contiguous stride.
Check if type derives from EigenBase
Extends std::false_type when instantiated with zero or more template parameters, all of which extend ...
scalar_type_t< typename std::decay_t< T >::Scalar > type
scalar_type_t< typename Eigen::internal::traits< std::decay_t< T > >::Scalar > type
Metaprogram structure to determine the base scalar type of a template argument.
typename std::decay_t< T >::Scalar type
typename Eigen::internal::traits< std::decay_t< T > >::Scalar type
Primary template class for metaprogram to compute the type of values stored in a container.