Мне нужно передать значение количества в библиотеку для оценки. библиотека бустеров принимает двойные значения в СИ, поэтому библиотека блоков повышения очень привлекательна для обеспечения этого требования. Однако как я должен привести количество к двойному значению? Документация и пример, кажется, избегают этого, так как цель состоит в том, чтобы по праву поддерживать единицы.
Что-то вроде:
quantity<pressure> p(101.1 * kilo * pascals);
double dblP = static_cast<double>(p); // double value in Pascals
Просматривая заголовки, можно предположить … Это правильный способ приведения к базовому типу?
p.value();
справочная документация показывает, что либо неявное приведение или value()
член метод может быть использован.
operator value_type() const;
неявное преобразование в value_type разрешено
const value_type & value() const;
постоянный доступ к значению
Я думаю, что вы ищете это:
quantity<pressure> p(101.1 * kilo * pascals);
double dblP = p / pascals; // double value in Pascals
Если вы разделите блок, у вас останется quantity<dimensionless>
который неявно преобразуется в double
, Это устраняет любой вопрос о том, что такое внутреннее представление (которое value()
возвращается) единицы есть.
Просто заметил это. Я думаю, что предполагаемый метод заключается в использовании Boost’s quantity_cast
оператор.
quantity<pressure> p(101.1 * kilo * pascals);
double dblP = quantity_cast<double>(p);