Opened 6 years ago

Last modified 6 years ago

#12766 new Feature Requests

Boost Units: Quantities in Constexpr Functions

Reported by: a.huebl@… Owned by: Jürgen Hunold
Milestone: To Be Determined Component: units
Version: Boost 1.62.0 Severity: Problem
Keywords: units literal constexpr Cc:

Description

I would like to use boost quantities in C++11 constexpr functions (and later C++14 constexpr functions). Unfurtunately, I can not define a simple quantity as constexpr:

#include <boost/units/systems/si.hpp>
#include <boost/units/quantity.hpp>

using namespace boost::units;

constexpr quantity< si::length, double >  dtestExt{ 0.2e-6 };
// or
constexpr quantity< si::length, double >  dtestExt = 0.2e-6;

g++ -std=c++11 (4.9.4):

error: the type ‘
const boost::units::quantity<
  boost::units::unit<
    boost::units::list<
      boost::units::dim<
        boost::units::length_base_dimension,
        boost::units::static_rational<1l>
      >,
      boost::units::dimensionless_type
    >,
    boost::units::homogeneous_system<
      boost::units::list<
        boost::units::si::meter_base_unit,
        boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10l, boost::units::static_rational<3l> > >,
        boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > >
          >
        >
      >
    >
  >
>’
of constexpr variable ‘dtestExt’ is not literal

Change History (1)

comment:1 by Jürgen Hunold, 6 years ago

Owner: changed from Matthias Schabel to Jürgen Hunold

This might be solved by https://github.com/boostorg/units/pull/22 which unfortunately is missing tests.

Note: See TracTickets for help on using tickets.