问题出在标题中.我在参考文档中找不到相关信息.我不明白为什么默认构造函数会抛出,但我需要确保它是无法正确记录我的异常保证.
我想percent用Boost.Units 实现一个单元,这样无量纲的数量(比如一个比例)可以表示为百分比.我已成功实现了质量密度单位之间的转换,但同样不适用于无量纲单位.这是我的代码(假设using namespace boost::units;):
//
// gram per milliliter (g mL^-1)
//
namespace my {
struct gram_per_milliliter_base_unit :
base_unit<gram_per_milliliter_base_unit, mass_density_dimension, 1>
{
static std::string name() {return "gram per milliliter";}
static std::string symbol() {return "g mL^-1";}
};
typedef gram_per_milliliter_base_unit::unit_type gram_per_milliliter_unit;
BOOST_UNITS_STATIC_CONSTANT(gram_per_milliliter, gram_per_milliliter_unit);
BOOST_UNITS_STATIC_CONSTANT(grams_per_milliliter, gram_per_milliliter_unit);
}
BOOST_UNITS_DEFINE_CONVERSION_FACTOR(
my::gram_per_milliliter_base_unit, si::mass_density, double, 1.0e3
); // 1 g mL^-1 == 1e3 kg m^-3 (SI unit)
BOOST_UNITS_DEFAULT_CONVERSION(my::gram_per_milliliter_base_unit, si::mass_density);
//
// percentage (%)
//
namespace my {
struct percent_base_unit :
base_unit<percent_base_unit, dimensionless_type, 2> …Run Code Online (Sandbox Code Playgroud) 在 C++11 中,std::enable_if被添加到标准库中。它相当于boost::enable_if_c其条件为 a bool。这适用于相当简单的条件,但是一旦您使用将结果保持为value常量的谓词,您就必须使用更详细的构造my_predicate<MyArgs>::value将其转换为bool. 这正是boost::enable_if(无_c后缀)的目的。
为什么标准库中没有等价物?