1#ifndef STAN_MATH_PRIM_META_IS_VECTOR_HPP
2#define STAN_MATH_PRIM_META_IS_VECTOR_HPP
18template <
typename T,
typename =
void>
26template <typename T, bool = is_eigen<T>::value>
39template <typename T, bool = is_eigen<T>::value>
41 : std::integral_constant<bool, std::decay_t<T>::RowsAtCompileTime == 1> {};
52template <typename T, bool = bool_constant<is_eigen<T>::value
67template <typename T, bool = bool_constant<is_eigen<T>::value
71 :
std::integral_constant<bool,
std::decay_t<T>::RowsAtCompileTime == 1> {};
108template <
typename... Types>
123template <
template <
class...>
class TypeCheck,
class... Check>
126 TypeCheck, Check...>>;
155template <
typename... Types>
210 || is_eigen_row_vector<T>::value> {};
230template <
typename... Types>
236template <
typename... Types>
242template <
typename... Types>
249template <
typename... Types>
264template <
template <
class...>
class TypeCheck,
class... Check>
267 TypeCheck, Check...>>;
274template <
template <
class...>
class TypeCheck,
class... Check>
277 TypeCheck, Check...>>;
284template <
template <
class...>
class TypeCheck,
class... Check>
287 TypeCheck, Check>...>;
295template <
template <
class...>
class TypeCheck,
class... Check>
298 TypeCheck, Check>...>;
305template <
template <
class...>
class TypeCheck,
class... Check>
308 TypeCheck, Check>...>;
315template <
template <
class...>
class TypeCheck,
class... Check>
318 TypeCheck, Check>...>;
325template <
template <
class...>
class TypeCheck,
class... Check>
328 TypeCheck, Check...>>;
335template <
template <
class...>
class TypeCheck,
class... Check>
338 TypeCheck, Check...>>;
345template <
template <
class...>
class TypeCheck,
class... Check>
348 TypeCheck, Check>...>;
356template <
template <
class...>
class TypeCheck,
class... Check>
366template <
template <
class...>
class TypeCheck,
class... Check>
369 TypeCheck, Check>...>;
376template <
template <
class...>
class TypeCheck,
class... Check>
386template <
typename Row,
typename Col>
394template <
typename Row,
typename Col>
402template <
typename Row,
typename Col>
410template <
typename Row,
typename Col>
422 :
bool_constant<is_eigen_vector<T>::value || is_std_vector<T>::value
424 && is_eigen_vector<value_type_t<T>>::value)> {};
443template <
typename... Types>
448template <
typename... Types>
453template <
typename... Types>
459template <
typename... Types>
474template <
template <
class...>
class TypeCheck,
class... Check>
483template <
template <
class...>
class TypeCheck,
class... Check>
492template <
template <
class...>
class TypeCheck,
class... Check>
501template <
template <
class...>
class TypeCheck,
class... Check>
510template <
template <
class...>
class TypeCheck,
class... Check>
519template <
template <
class...>
class TypeCheck,
class... Check>
528template <
template <
class...>
class TypeCheck,
class... Check>
537template <
template <
class...>
class TypeCheck,
class... Check>
546template <
template <
class...>
class TypeCheck,
class... Check>
555template <
template <
class...>
class TypeCheck,
class... Check>
564template <
template <
class...>
class TypeCheck,
class... Check>
573template <
template <
class...>
class TypeCheck,
class... Check>
590template <
typename... Args>
600 T,
std::enable_if_t<internal::is_std_vector_impl<std::decay_t<T>>::value>>
625 using type =
typename std::decay_t<T>::value_type;
645template <
typename... Types>
651template <
typename... Types>
657template <
typename... Types>
664template <
typename... Types>
679template <
template <
class...>
class TypeCheck,
class... Check>
682 TypeCheck, Check...>>;
689template <
template <
class...>
class TypeCheck,
class... Check>
692 TypeCheck, Check...>>;
699template <
template <
class...>
class TypeCheck,
class... Check>
702 TypeCheck, Check>...>;
710template <
template <
class...>
class TypeCheck,
class... Check>
713 TypeCheck, Check>...>;
720template <
template <
class...>
class TypeCheck,
class... Check>
723 TypeCheck, Check>...>;
730template <
template <
class...>
class TypeCheck,
class... Check>
733 TypeCheck, Check>...>;
740template <
template <
class...>
class TypeCheck,
class... Check>
743 TypeCheck, Check...>>;
750template <
template <
class...>
class TypeCheck,
class... Check>
753 TypeCheck, Check...>>;
760template <
template <
class...>
class TypeCheck,
class... Check>
763 TypeCheck, Check>...>;
771template <
template <
class...>
class TypeCheck,
class... Check>
774 TypeCheck, Check>...>;
781template <
template <
class...>
class TypeCheck,
class... Check>
784 TypeCheck, Check>...>;
791template <
template <
class...>
class TypeCheck,
class... Check>
794 TypeCheck, Check>...>;
require_t< is_col_vector< std::decay_t< T > > > require_col_vector_t
Require type satisfies is_col_vector.
require_not_t< is_col_vector< std::decay_t< T > > > require_not_col_vector_t
Require type does not satisfy is_col_vector.
require_all_t< is_col_vector< std::decay_t< Types > >... > require_all_col_vector_t
Require all of the types satisfy is_col_vector.
require_t< container_type_check_base< is_eigen_col_vector, value_type_t, TypeCheck, Check... > > require_eigen_col_vector_vt
Require type satisfies is_eigen_col_vector.
require_t< is_eigen_col_vector< std::decay_t< T > > > require_eigen_col_vector_t
Require type satisfies is_eigen_col_vector.
require_not_t< is_eigen_col_vector< std::decay_t< T > > > require_not_eigen_col_vector_t
Require type does not satisfy is_eigen_col_vector.
require_all_t< is_eigen_col_vector< std::decay_t< Types > >... > require_all_eigen_col_vector_t
Require all of the types satisfy is_eigen_col_vector.
require_t< is_eigen_row_vector< std::decay_t< T > > > require_eigen_row_vector_t
Require type satisfies is_eigen_row_vector.
require_any_not_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check >... > require_any_not_eigen_vector_vt
Require at least one of the types does not satisfy is_eigen_vector.
require_all_not_t< is_eigen_vector< std::decay_t< Types > >... > require_all_not_eigen_vector_t
Require none of the types satisfy is_eigen_vector.
require_all_not_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check >... > require_all_not_eigen_vector_vt
Require none of the types satisfy is_eigen_vector.
require_not_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check... > > require_not_eigen_vector_vt
Require type does not satisfy is_eigen_vector or.
require_not_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check... > > require_not_eigen_vector_st
Require type does not satisfy is_eigen_vector.
require_any_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check >... > require_any_eigen_vector_vt
Require any of the types satisfy is_eigen_vector.
require_all_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check >... > require_all_eigen_vector_vt
Require all of the types satisfy is_eigen_vector.
require_t< is_eigen_vector< std::decay_t< T > > > require_eigen_vector_t
Require type satisfies is_eigen_vector.
require_t< container_type_check_base< is_eigen_vector, value_type_t, TypeCheck, Check... > > require_eigen_vector_vt
Require type satisfies is_eigen_vector.
require_any_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check >... > require_any_eigen_vector_st
Require any of the types satisfy is_eigen_vector.
require_not_t< is_eigen_vector< std::decay_t< T > > > require_not_eigen_vector_t
Require type does not satisfy is_eigen_vector.
require_all_not_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check >... > require_all_not_eigen_vector_st
Require none of the types satisfy is_eigen_vector.
require_any_not_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check >... > require_any_not_eigen_vector_st
Require at least one of the types does not satisfy is_eigen_vector.
require_any_t< is_eigen_vector< std::decay_t< Types > >... > require_any_eigen_vector_t
Require any of the types satisfy is_eigen_vector.
require_any_not_t< is_eigen_vector< std::decay_t< Types > >... > require_any_not_eigen_vector_t
Require at least one of the types do not satisfy is_eigen_vector.
require_all_t< is_eigen_vector< std::decay_t< Types > >... > require_all_eigen_vector_t
Require all of the types satisfy is_eigen_vector.
require_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check... > > require_eigen_vector_st
Require type satisfies is_eigen_vector.
require_all_t< container_type_check_base< is_eigen_vector, scalar_type_t, TypeCheck, Check >... > require_all_eigen_vector_st
Require all of the types does not satisfy is_eigen_vector.
require_t< is_row_vector< std::decay_t< T > > > require_row_vector_t
Require type satisfies is_row_vector.
require_any_not_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check >... > require_any_not_std_vector_vt
Require at least one of the types does not satisfy is_std_vector.
require_not_t< is_std_vector< std::decay_t< T > > > require_not_std_vector_t
Require type does not satisfy is_std_vector.
require_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check... > > require_std_vector_vt
Require type satisfies is_std_vector.
require_all_not_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check >... > require_all_not_std_vector_st
Require none of the types satisfy is_std_vector.
require_any_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check >... > require_any_std_vector_vt
Require any of the types satisfy is_std_vector.
require_not_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check... > > require_not_std_vector_vt
Require type does not satisfy is_std_vector or.
require_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check... > > require_std_vector_st
Require type satisfies is_std_vector.
require_any_t< is_std_vector< std::decay_t< Types > >... > require_any_std_vector_t
Require any of the types satisfy is_std_vector.
require_all_not_t< is_std_vector< std::decay_t< Types > >... > require_all_not_std_vector_t
Require none of the types satisfy is_std_vector.
require_t< is_std_vector< std::decay_t< T > > > require_std_vector_t
Require type satisfies is_std_vector.
require_any_not_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check >... > require_any_not_std_vector_st
Require at least one of the types does not satisfy is_std_vector.
require_not_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check... > > require_not_std_vector_st
Require type does not satisfy is_std_vector.
require_all_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check >... > require_all_std_vector_vt
Require all of the types satisfy is_std_vector.
require_all_t< is_std_vector< std::decay_t< Types > >... > require_all_std_vector_t
Require all of the types satisfy is_std_vector.
require_all_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check >... > require_all_std_vector_st
Require all of the types does not satisfy is_std_vector.
require_any_t< container_type_check_base< is_std_vector, scalar_type_t, TypeCheck, Check >... > require_any_std_vector_st
Require any of the types satisfy is_std_vector.
require_all_not_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check >... > require_all_not_std_vector_vt
Require none of the types satisfy is_std_vector.
require_any_not_t< is_std_vector< std::decay_t< Types > >... > require_any_not_std_vector_t
Require at least one of the types do not satisfy is_std_vector.
typename value_type< T >::type value_type_t
Helper function for accessing underlying type.
std::integral_constant< bool, B > bool_constant
Alias for structs used for wraps a static constant of bool.
require_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check... > > require_vector_vt
Require type satisfies is_vector.
require_not_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check... > > require_not_vector_st
Require type does not satisfy is_vector.
require_all_t< is_vector< std::decay_t< Types > >... > require_all_vector_t
Require all of the types satisfy is_vector.
require_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check... > > require_vector_st
Require type satisfies is_vector.
require_t< is_vector< std::decay_t< T > > > require_vector_t
Require type satisfies is_vector.
require_all_not_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check >... > require_all_not_vector_st
Require none of the types satisfy is_vector.
require_any_not_t< is_vector< std::decay_t< Types > >... > require_any_not_vector_t
Require at least one of the types do not satisfy is_vector.
require_all_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check >... > require_all_vector_vt
Require all of the types satisfy is_vector.
require_any_not_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check >... > require_any_not_vector_vt
Require at least one of the types does not satisfy is_vector.
require_not_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check... > > require_not_vector_vt
Require type does not satisfy is_vector or.
require_all_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check >... > require_all_vector_st
Require all of the types does not satisfy is_vector.
require_any_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check >... > require_any_vector_st
Require any of the types satisfy is_vector.
require_any_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check >... > require_any_vector_vt
Require any of the types satisfy is_vector.
require_all_not_t< is_vector< std::decay_t< Types > >... > require_all_not_vector_t
Require none of the types satisfy is_vector.
require_not_t< is_vector< std::decay_t< T > > > require_not_vector_t
Require type does not satisfy is_vector.
require_any_not_t< container_type_check_base< is_vector, scalar_type_t, TypeCheck, Check >... > require_any_not_vector_st
Require at least one of the types does not satisfy is_vector.
require_any_t< is_vector< std::decay_t< Types > >... > require_any_vector_t
Require any of the types satisfy is_vector.
require_all_not_t< container_type_check_base< is_vector, value_type_t, TypeCheck, Check >... > require_all_not_vector_vt
Require none of the types satisfy is_vector.
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.
require_not_t< math::conjunction< is_eigen_row_vector< Row >, is_eigen_col_vector< Col > > > require_not_eigen_row_and_col_t
Require Row is not a row vector and Col is not a column vector.
require_not_t< math::conjunction< is_row_vector< Row >, is_col_vector< Col > > > require_not_row_and_col_vector_t
Require Row is not a row vector and Col is not a column vector.
require_t< math::conjunction< is_eigen_row_vector< Row >, is_eigen_col_vector< Col > > > require_eigen_row_and_col_t
Require Row is a row vector and Col is a column vector.
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.
constexpr bool is_row_vector_v
constexpr bool is_std_vector_v
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...
require_t< math::conjunction< is_row_vector< Row >, is_col_vector< Col > > > require_row_and_col_vector_t
Require Row is a row vector and Col is a column vector.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Underlying implementation for detecting if a Matrix is a column vector.
Underlying implementation for detecting if an Eigen Matrix is a column vector.
Underlying implementation for detecting if an Eigen Matrix is a row vector.
Underlying implementation for detecting if a Matrix is a row vector.
This underlying implementation is used when the type is not an std vector.
If the input type T has a static comple time constant type ColsAtCompileTime equal to 1 this has a st...
If the input type T is an eigen matrix with 1 row at compile time this has a static member with a val...
If the input type T is an eigen matrix with 1 column at compile time this has a static member with a ...
If the input type T is an eigen matrix with 1 column or 1 row at compile time this has a static membe...
Check if type derives from EigenBase
If the input type T has a static comple time constant type RowsAtCompileTime equal to 1 this has a st...
Base implementation for checking if type is std vector.
Defines a static member named value which is defined to be false as the primitive scalar types cannot...
If the input type T is either an eigen matrix with 1 column or 1 row at compile time or a standard ve...
Extends std::true_type when instantiated with zero or more template parameters, all of which extend t...
scalar_type_t< typename std::decay_t< T >::value_type > type
Metaprogram structure to determine the base scalar type of a template argument.
typename std::decay_t< T >::value_type type
Primary template class for metaprogram to compute the type of values stored in a container.