Используйте встроенные инициализаторы статических данных

Я нашел этот раздел в cpp_dec_float исходный файл:

struct initializer
{
initializer()
{
cpp_dec_float<Digits10, ExponentType, Allocator>::nan();
cpp_dec_float<Digits10, ExponentType, Allocator>::inf();
(cpp_dec_float<Digits10, ExponentType, Allocator>::min)();
(cpp_dec_float<Digits10, ExponentType, Allocator>::max)();
cpp_dec_float<Digits10, ExponentType, Allocator>::zero();
cpp_dec_float<Digits10, ExponentType, Allocator>::one();
cpp_dec_float<Digits10, ExponentType, Allocator>::two();
cpp_dec_float<Digits10, ExponentType, Allocator>::half();
cpp_dec_float<Digits10, ExponentType, Allocator>::double_min();
cpp_dec_float<Digits10, ExponentType, Allocator>::double_max();
cpp_dec_float<Digits10, ExponentType, Allocator>::long_double_max();
cpp_dec_float<Digits10, ExponentType, Allocator>::long_double_min();
cpp_dec_float<Digits10, ExponentType, Allocator>::long_long_max();
cpp_dec_float<Digits10, ExponentType, Allocator>::long_long_min();
cpp_dec_float<Digits10, ExponentType, Allocator>::ulong_long_max();
cpp_dec_float<Digits10, ExponentType, Allocator>::eps();
cpp_dec_float<Digits10, ExponentType, Allocator>::pow2(0);
}
void do_nothing(){}
};

Я хотел бы использовать некоторые из этих значений, таких как zero, one, two, а также half вместо того, чтобы объявлять глобальный const переменные.

Можно ли использовать эти значения в строке? Если так, то как?

пример:

#include <boost/multiprecision/number.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>

namespace mp = boost::multiprecision;

int main()
{
typedef mp::number<mp::cpp_dec_float<100>> mp_type;
mp_type test_num("7.0710678");

test_num *= mp_type.two();

std::cout << test_num.str( 0, std::ios_base::scientific ) << '\n';
}

0

Решение

boost::multiprecision::number повторяет свой первый аргумент шаблона как открытый тип члена backend_type, Так,

test_num = test_num * mp_type::backend_type::two();
2

Другие решения


По вопросам рекламы [email protected]