使用模板在编译时计算float

时间:2009-06-02 15:57:39

标签: c++ templates

我是C ++混乱中的整个模板元编程的新手,我根本无法做到这一点。

场景: 例如,我有分数2 / 5,6 / 9,...我想在编译时计算这些分数的结果,并在运行时使用该值对它们进行排序。

这甚至可能吗? 宏可能吗?

修改 谢谢Naveen,但如果可以使用模板在编译时计算浮点数,它就不回答这个问题。例如,使用递归。

我在网上找不到任何信息:/

3 个答案:

答案 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)

相关问题