我會假設這是C++標準中涵蓋的,但我一直無法找到它。我正在編寫一些模板,它們將對它們的非類型積分參數進行算術運算,並且我發現在template <int x> Foo
這樣的模板中需要參數'x'的相當於MAX_INT
。如何確定模板非類型整型常量參數中的位數?
理想情況下,有人可以將我指向標準中的段落(如果存在的話),該段落給出了整型模板參數大小的允許範圍,以及確定特定實現上實際位數的任何方式。
-
澄清:它將作爲元編程庫的一部分在類型系統內進行數學運算的模板。 'int'永遠不會被實例化,並且永遠不會佔用運行時存儲空間。在很多方面,它類似於預處理器所做的數學運算,在這種情況下,我知道整型不能保證與'int'的大小相同。我正在尋找的是標準的一部分,它說明了類型是否相同,如果不是,編譯期間模板整型參數使用了多少位。
我已經在使用boost.mpl。如果它解決了我的問題,我還沒有找到它。 integer_traits庫對我來說似乎也沒用,因爲這些值不是整型常量表達式,所以不能在模板數學中使用。 – swestrup 2010-10-13 20:52:19
boost :: integer_traits :: const_min和boost :: integer_traits :: const_max絕對是編譯時常量。對於[在多種類型之間進行選擇](http://www.boost.org/doc/libs/1_44_0/libs/mpl/doc/refmanual/type-selection.html)(或值,但它們表示爲包含值(在boost.mpl中)或值[基於某些條件](http://www.boost.org/doc/libs/1_44_0/libs/mpl/doc/refmanual/comparisons.html)([包括邏輯運算]( http://www.boost.org/doc/libs/1_44_0/libs/mpl/doc/refmanual/logical-operations.html))boost.mpl非常適合。 –
Vinzenz
2010-10-13 21:07:53
也有[按位操作,其他人可以看到元函數列表](http://www.boost.org/doc/libs/1_44_0/libs/mpl/doc/refmanual/metafunctions.html) – Vinzenz 2010-10-13 21:09:23