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

using namespace boost::units;

struct bu1 : base_unit<bu1, length_dimension, 2001> {};
struct bu2 : base_unit<bu2, length_dimension, 2002> {};

BOOST_UNITS_DEFINE_CONVERSION_FACTOR(bu1, bu2, double, 1.5);

#if 1
BOOST_UNITS_DEFINE_CONVERSION_FACTOR(bu2, bu1, double, 4.0);
#endif

int main(int argc, char *argv[])
{
  quantity<bu1::unit_type> output(1 * bu2::unit_type());

  //  prints 4 or 0.67
  std::cout << output.value() << std::endl;

  return 0;
}

コードは、2 番目の変換係数が定義されているかどうかに応じて、4またはのいずれかを出力します。0.666667これは設計によるものですか?異なる変換係数を必要とする物理学の単位は 2 つとありませんね。

4

1 に答える 1