forked from mpusz/mp-units
pow<N>() fixed to work with the integral representations
This commit is contained in:
@@ -32,7 +32,7 @@ namespace units {
|
|||||||
{
|
{
|
||||||
using dim = dimension_pow_t<typename U::dimension, N>;
|
using dim = dimension_pow_t<typename U::dimension, N>;
|
||||||
using r = ratio_pow<typename U::ratio, N>;
|
using r = ratio_pow<typename U::ratio, N>;
|
||||||
return quantity<downcast_traits_t<unit<dim, r>>, Rep>(std::pow(q.count(), N));
|
return quantity<downcast_traits_t<unit<dim, r>>, Rep>(static_cast<Rep>(std::pow(q.count(), N)));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename U, typename Rep>
|
template<typename U, typename Rep>
|
||||||
@@ -40,7 +40,7 @@ namespace units {
|
|||||||
{
|
{
|
||||||
using dim = dimension_sqrt_t<typename U::dimension>;
|
using dim = dimension_sqrt_t<typename U::dimension>;
|
||||||
using r = ratio_sqrt<typename U::ratio>;
|
using r = ratio_sqrt<typename U::ratio>;
|
||||||
return quantity<downcast_traits_t<unit<dim, r>>, Rep>(std::sqrt(q.count()));
|
return quantity<downcast_traits_t<unit<dim, r>>, Rep>(static_cast<Rep>(std::sqrt(q.count())));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace units
|
} // namespace units
|
||||||
|
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
#include "units/dimensions/velocity.h"
|
#include "units/dimensions/velocity.h"
|
||||||
#include "units/dimensions/frequency.h"
|
#include "units/dimensions/frequency.h"
|
||||||
|
#include "units/dimensions/area.h"
|
||||||
|
#include "units/math.h"
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
@@ -130,8 +132,7 @@ namespace {
|
|||||||
static_assert([]() {
|
static_assert([]() {
|
||||||
quantity<metre, int> l1(1), l2(2);
|
quantity<metre, int> l1(1), l2(2);
|
||||||
return l2 = l1;
|
return l2 = l1;
|
||||||
}()
|
}().count() == 1);
|
||||||
.count() == 1);
|
|
||||||
|
|
||||||
// static member functions
|
// static member functions
|
||||||
|
|
||||||
@@ -281,4 +282,6 @@ namespace {
|
|||||||
static_assert(2kmph * 2h == 4km);
|
static_assert(2kmph * 2h == 4km);
|
||||||
static_assert(2km / 2kmph == 1h);
|
static_assert(2km / 2kmph == 1h);
|
||||||
|
|
||||||
|
static_assert(std::is_same_v<decltype(pow<2>(2m)), decltype(4sq_m)>);
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
Reference in New Issue
Block a user