我有一個不同於我的圖書館的正常值,稱之爲the_val
。現在,我想要log_of_the_val
成爲floor(log_2(the_val)) - 不是用C++代碼說話 - 當然,我希望它在編譯時發生。現在什麼是在編譯時計算積分基2對數的正確方法?
,用gcc,我可以做類似
decltype(the_val) log_of_the_val = sizeof(the_val) * CHAR_BIT - __builtin_clz(the_val) - 1;
,並應工作,我認爲(長 - 數標題零)。否則,我可以自己實現一個constexpr函數,但我敢打賭,還有其他更簡單,便攜的東西,我可以在編譯時使用它。 ...問題是,那會是什麼?
@IlyaPopov:是的。 – einpoklum