[英]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.