Skip to content

Commit dcf0568

Browse files
committed
perf: expr_projectable concept removed to improve compilation performance
1 parent 1090c40 commit dcf0568

File tree

1 file changed

+2
-21
lines changed

1 file changed

+2
-21
lines changed

src/core/include/mp-units/framework/expression_template.h

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -521,24 +521,6 @@ struct expr_type_map<power<F, Ints...>, Proj> {
521521
using type = power<Proj<F>, Ints...>;
522522
};
523523

524-
template<typename T, template<typename> typename Proj>
525-
concept expr_type_projectable = (requires { typename Proj<T>; } ||
526-
(is_specialization_of_power<T> && requires { typename Proj<typename T::factor>; }));
527-
528-
template<typename T, template<typename> typename Proj>
529-
constexpr bool expr_projectable_impl = false;
530-
531-
template<typename... Ts, template<typename> typename Proj>
532-
constexpr bool expr_projectable_impl<type_list<Ts...>, Proj> = (... && expr_type_projectable<Ts, Proj>);
533-
534-
template<typename T, template<typename> typename Proj>
535-
concept expr_projectable = requires {
536-
typename T::_num_;
537-
typename T::_den_;
538-
requires expr_projectable_impl<typename T::_num_, Proj>;
539-
requires expr_projectable_impl<typename T::_den_, Proj>;
540-
};
541-
542524
template<typename T>
543525
[[nodiscard]] consteval auto map_power(T t)
544526
{
@@ -552,8 +534,7 @@ template<typename T, auto... Ints>
552534
}
553535

554536
template<template<typename> typename Proj, template<typename...> typename To, SymbolicArg OneType,
555-
template<typename, typename> typename Pred, expr_type_projectable<Proj>... Nums,
556-
expr_type_projectable<Proj>... Dens>
537+
template<typename, typename> typename Pred, typename... Nums, typename... Dens>
557538
[[nodiscard]] consteval auto expr_map_impl(type_list<Nums...>, type_list<Dens...>)
558539
{
559540
return (OneType{} * ... * map_power(typename expr_type_map<Nums, Proj>::type{})) /
@@ -570,7 +551,7 @@ template<template<typename> typename Proj, template<typename...> typename To, Sy
570551
* @tparam T expression template to map from
571552
*/
572553
template<template<typename> typename Proj, template<typename...> typename To, SymbolicArg OneType,
573-
template<typename, typename> typename Pred, expr_projectable<Proj> T>
554+
template<typename, typename> typename Pred, typename T>
574555
[[nodiscard]] consteval auto expr_map(T)
575556
{
576557
if constexpr (type_list_size<typename T::_num_> + type_list_size<typename T::_den_> == 0)

0 commit comments

Comments
 (0)