Automatic Differentiation
 
Loading...
Searching...
No Matches
common_container_type.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_META_COMMON_CONTAINER_TYPE_HPP
2#define STAN_MATH_PRIM_META_COMMON_CONTAINER_TYPE_HPP
3
12#include <type_traits>
13
14namespace stan {
15namespace internal {
16template <typename T1, typename T2, typename = void, typename = void>
18
19template <typename T1, typename T2>
23};
24
25template <typename T1, typename T2>
31 using type = std::conditional_t<
32 std::is_same<container_type_1, container_type_2>::value, container_type_1,
33 void>;
34};
35
36template <typename T1, typename T2>
40};
41
42template <typename T1, typename T2>
46};
47} // namespace internal
48
49template <typename... Ts>
51
52template <typename T>
55 T, double>::type; // Use double for base case
56};
57
66template <typename T1, typename... Ts>
67struct common_container_type<T1, Ts...> {
69 T1, typename common_container_type<Ts...>::type>::type;
70};
71
72template <typename... Ts>
73using common_container_t = typename common_container_type<Ts...>::type;
74
75} // namespace stan
76
77#endif // STAN_MATH_PRIM_META_PLAIN_TYPE_HPP
require_t< is_container< std::decay_t< T > > > require_container_t
Require type satisfies is_container.
require_t< is_stan_scalar< std::decay_t< T > > > require_stan_scalar_t
Require type satisfies is_stan_scalar.
typename return_type< Ts... >::type return_type_t
Convenience type for the return type of the specified template parameters.
typename promote_scalar_type< std::decay_t< T >, std::decay_t< S > >::type promote_scalar_t
typename plain_type< std::decay_t< T > >::type plain_type_t
typename common_container_type< Ts... >::type common_container_t
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
typename internal::common_container_type_impl< T1, typename common_container_type< Ts... >::type >::type type
typename internal::common_container_type_impl< T, double >::type type
std::conditional_t< std::is_same< container_type_1, container_type_2 >::value, container_type_1, void > type