我在寫一個模板類,它將浮點類型(float,double,decimal,GMP)作爲參數。不過,我的類需要各種數字常量。其中一些是有理數(int/int),而另一些則是非理性的,可用於30位左右的小數位。用於模板代碼的高精度常量
什麼是去初始化這些常量的最好辦法,所以:
T c1 = <constant>;
其中T是模板類型?雖然我總是可以回退雙打(T c1 = 0.1415926535 ...),並依靠編譯器/隱式初始化程序將其轉換爲適當的類型,但如果可能的話,我希望保留更高的精度。
我對當前的解決方案以及那些C++ 0x(或者它是C++ 1x?)可能帶來的表感興趣。
我覺得是需要專業化。 – kennytm 2010-04-13 22:36:10
非類型模板參數不能有浮點類型;它必須具有整型或枚舉類型,或者是指向函數的指針或引用。 – 2010-04-13 22:37:21
確實如此,但是沒有什麼能阻止你使用'long long'來存儲尾數和另一個'long long'來存儲指數,只要你願意自己實現數學運算... – Will 2010-04-13 22:52:04