Код: Выделить всё
#include
#include
#include
#include
constexpr bool is_base_2(uint64_t number){
return (number != 1) && ((number & (number - 1)) == 0);
}
constexpr uint64_t power(uint64_t number, uint8_t index){
uint64_t current{number};
for(uint8_t i{1}; i
class fixed{
friend struct std::hash;
public:
template <
typename Number,
typename std::enable_if_t = 0>
fixed(const Number& number){
static_assert(
std::is_signed_v ? is_signed : true,
"cannot create unsigned fixed-point from signed arithmetic type"
);
data = number * scaling_factor_inverse;
}
fixed( const fixed & ) = default;
template<
typename Number,
typename = typename std::enable_if_t
>
operator Number() const
{
static_assert(
std::is_unsigned_v ? !is_signed : true,
"cannot convert signed fixed-point to an unsigned arithmetic type"
);
return
static_cast(
static_cast(data) /
static_cast(scaling_factor_inverse)
)
;
}
private:
UnderlyingIntegerType data;
fixed() = default;
};
template
struct std::hash{
std::size_t operator()(fixed number) const {
static std::hash hasher{};
return hasher(number.data);
}
};
Код: Выделить всё
template
struct std::hash{
std::size_t operator()(fixed number) const {
static std::hash hasher{};
return hasher(number.data);
}
};
Код: Выделить всё
error: expected parameter declarator
std::size_t operator()(fixed number) const {
^
src/main/util/fixed_point.h:181:74: error: expected ')'
std::size_t operator()(fixed number) const {
^
Пожалуйста, будьте осторожны. нежен со мной.
Я пытался заменить
Код: Выделить всё
std::size_t operator()(fixed number) const {
Подробнее здесь: https://stackoverflow.com/questions/785 ... parameters