Skip to content

Commit 0bcdf35

Browse files
committed
More specific templates
1 parent 15bd7a3 commit 0bcdf35

1 file changed

Lines changed: 10 additions & 14 deletions

File tree

stan/math/prim/meta/forward_as.hpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,12 @@ inline T_actual&& forward_as(T_actual&& a) { // NOLINT
5454
* @return nothing, this always throws
5555
* @throw always throws std::runtime_error
5656
*/
57-
template <
58-
typename T_desired, typename T_actual,
59-
require_any_not_eigen_t<T_desired, T_actual>* = nullptr,
60-
typename = std::enable_if_t<
61-
!std::is_same<std::decay<T_actual>, std::decay<T_desired>>::value
62-
&& !(std::is_arithmetic_v<std::decay_t<
63-
T_desired>> && std::is_arithmetic_v<std::decay_t<T_actual>>)>>
57+
template <typename T_desired, typename T_actual,
58+
require_any_not_eigen_t<T_desired, T_actual>* = nullptr,
59+
typename = std::enable_if_t<
60+
!std::is_same<std::decay<T_actual>, std::decay<T_desired>>::value
61+
&& !(std::is_floating_point_v<std::decay_t<T_desired>>
62+
&& std::is_integral_v<std::decay_t<T_actual>>)>>
6463
inline T_desired forward_as(const T_actual& a) {
6564
throw std::runtime_error("Wrong type assumed! Please file a bug report.");
6665
}
@@ -80,13 +79,10 @@ inline T_desired forward_as(const T_actual& a) {
8079
* @param a input value
8180
* @return a
8281
*/
83-
template <
84-
typename T_desired, typename T_actual,
85-
typename = std::enable_if_t<
86-
!std::is_same_v<
87-
std::decay_t<T_actual>,
88-
std::decay_t<
89-
T_desired>> && std::is_arithmetic_v<std::decay_t<T_desired>> && std::is_arithmetic_v<std::decay_t<T_actual>>>>
82+
template <typename T_desired, typename T_actual,
83+
typename
84+
= std::enable_if_t<std::is_floating_point_v<std::decay_t<T_desired>>
85+
&& std::is_integral_v<std::decay_t<T_actual>>>>
9086
inline T_desired forward_as(const T_actual& a) {
9187
return static_cast<T_desired>(a);
9288
}

0 commit comments

Comments
 (0)