簡體   English   中英

使用模板在編譯時計算浮點數

[英]Calculate float at compile-time using templates

我是C ++混亂中整個模板元編程的新手,我簡直無法正確地做到這一點。

場景:例如,我有分數2 / 5、6 / 9...。我想在編譯時計算這些分數的結果,然后在運行時使用該值對它們進行排序。

這有可能嗎? 宏也許?

編輯:謝謝Naveen,但它無法回答是否可以在編譯時使用模板計算浮點數的問題。 例如,使用遞歸。

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

您不需要模板。 當您執行以下操作時,任何體面的編譯器都會優化計算: 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;
}

編輯:如果您真的想進入模板編程,無論是meta還是其他方式,我強烈建議您掌握《 C ++模板:完整指南》一書 ,這是很棒的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM