上面所列的类型仍然是纯粹的元数据。要想对真实的计算进行类型检查,我们还需要以某种方式将它们(元数据)绑定到运行时数据。一个简单的数值外覆类——模板参数为数据类型t和t的单位——刚好合适:
template <class t, class dimensions>
struct quantity
{
explicit quantity(t x)
: m_value(x)
{}
t value() const { return m_value; }
private:
t m_value;
};
现在,我们有了将数值和单位联系到一起的办法。例如,我们可以说: