使用模板在编译时计算浮点值 我在C++的混乱中对这个模板进行了一个新的元编程,我就是不能正确地处理这个问题。

使用模板在编译时计算浮点值 我在C++的混乱中对这个模板进行了一个新的元编程,我就是不能正确地处理这个问题。,c++,templates,C++,Templates,情景: 例如,我有分数2/5,6/9,。。。我想在编译时计算这些分数的结果,然后在运行时使用该值对它们进行排序 这可能吗? 也许是宏 编辑: 谢谢Naveen,但它没有回答是否可以在编译时使用模板计算浮点的问题。例如,使用递归 我在网站上找不到任何信息:/你不需要模板。当你这样做时,任何一个好的编译器都会优化计算:float f=2.0/5顺便说一句,如果所有变量都是编译时变量,为什么要在运行时对它们进行排序?这不需要模板。当你这样做时,任何一个好的编译器都会优化计算:float f=2.0/5

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

这可能吗? 也许是宏

编辑: 谢谢Naveen,但它没有回答是否可以在编译时使用模板计算浮点的问题。例如,使用递归


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

你不需要模板。当你这样做时,任何一个好的编译器都会优化计算:
float f=2.0/5顺便说一句,如果所有变量都是编译时变量,为什么要在运行时对它们进行排序?

这不需要模板。当你这样做时,任何一个好的编译器都会优化计算:
float f=2.0/5顺便说一句,如果所有变量都是编译时变量,为什么要在运行时对它们进行排序?

不确定您要问什么。你的意思是这样的:

#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;
}
#包括
使用名称空间std;;
模板结构分形{
双值()常量{
常数双f=a/双(b);
返回f;
}
};
int main(){
分形f;

我不知道你在问什么。你的意思是这样的:

#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;
}
#包括
使用名称空间std;;
模板结构分形{
双值()常量{
常数双f=a/双(b);
返回f;
}
};
int main(){
分形f;

不能模板元编程?那是我的猜测。确切地说,也许我应该写出来:)Break,你不需要这样做。你只需要写2.0/5,编译器也会在编译时计算它。@Break-我不会费心测试它-我认为这不能归类为元编程!除了纯fun或者出于学习目的,这个?模板元编程?这是我的猜测。确切地说,也许我应该把它写出来:)Break,你不需要这样做。你只需要写2.0/5,编译器也会在编译时计算它。@Break-我不会费心测试它-我不认为这可以归类为我ta编程!除了纯粹的娱乐或学习目的之外,这有什么真正的用途吗?