我是C ++混乱中的整个模板元编程的新手,我根本无法做到这一点。
场景: 例如,我有分数2 / 5,6 / 9,...我想在编译时计算这些分数的结果,并在运行时使用该值对它们进行排序。
这甚至可能吗? 宏可能吗?
修改 谢谢Naveen,但如果可以使用模板在编译时计算浮点数,它就不回答这个问题。例如,使用递归。
我在网上找不到任何信息:/
答案 0 :(得分:5)
您不需要模板。当您执行以下操作时,任何体面的编译器都会优化计算:float f = 2.0/5;
BTW,如果所有都是编译时变量,为什么要在运行时对它们进行排序?
答案 1 :(得分:2)
不确定你在问什么。你的意思是这样的:
#include <iostream>
using namespace std;;
template <int a, int b> struct Fract {
double value() const {
const double f = a / double(b);
return f;
}
};
int main() {
Fract <2,5> f;
cout << f.value() << endl;
}
修改:如果您真的想进入模板编程,元或其他方面,我强烈建议您掌握本书C++ Templates: The Complete Guide,这非常棒。
答案 2 :(得分:1)