c_cpp C ++ TMP测量单位POC
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++ TMP测量单位POC相关的知识,希望对你有一定的参考价值。
#include "stdafx.h"
class m { };
class kg { };
class s { };
template<typename T, int pm, int pkg, int ps>
class unit
{
public:
T value;
unit(T value) : value(value)
{
}
};
template<typename T, int pm, int pkg, int ps>
unit<T, pm, pkg, ps> operator+(const unit<T, pm, pkg, ps> &x, const unit<T, pm, pkg, ps> &y)
{
return unit<T, pm, pkg, ps>(x.value + y.value);
}
template<typename T, int pm, int pkg, int ps>
unit<T, pm, pkg, ps> operator-(const unit<T, pm, pkg, ps> &x, const unit<T, pm, pkg, ps> &y)
{
return unit<T, pm, pkg, ps>(x.value - y.value);
}
template<typename T, int pmx, int pkgx, int psx, int pmy, int pkgy, int psy>
unit<T, pmx + pmy, pkgx + pkgy, psx + psy> operator*(const unit<T, pmx, pkgx, psx> &x, const unit<T, pmy, pkgy, psy> &y)
{
return unit<T, pmx + pmy, pkgx + pkgy, psx + psy>(x.value * y.value);
}
template<typename T, int pmx, int pkgx, int psx, int pmy, int pkgy, int psy>
unit<T, pmx - pmy, pkgx - pkgy, psx - psy> operator/(const unit<T, pmx, pkgx, psx> &x, const unit<T, pmy, pkgy, psy> &y)
{
return unit<T, pmx - pmy, pkgx - pkgy, psx - psy>(x.value / y.value);
}
int _tmain()
{
auto foo = unit<float, 1, 0, 0>(5) + unit<float, 1, 0, 0>(10);
printf("%f\n", foo.value);
auto bar = unit<float, 0, 0, 1>(2) * unit<float, 0, 0, 1>(3) + unit<float, 0, 0, 2>(4);
printf("%f\n", bar.value);
}
以上是关于c_cpp C ++ TMP测量单位POC的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 用于测量性能的C ++ Timer
c_cpp 测量实验室终极
c_cpp C ++ TMP图灵机
c_cpp 以C为单位获取当前时间,以微秒为单位。
在 Qt/C++ 应用程序中管理测量单位转换的最佳实践
c_cpp 以位为单位显示十六进制;与掩码一起使用按位AND。