我一直在使用C++,但從未真正深入細節。最近發現約constexpr
,我認爲它具有微優化的巨大潛力,儘管我很難看到如何正確使用它。考慮到以下幾點:constexpr的使用案例與定義
#define squared(n) (n * n)
和
constexpr int squared(int n) {
return n * n;
}
他們都輸出同樣的事情,但我敢肯定,他們有很大的不同。根據我的知識,定義指令在編譯時被替換,因此squared(n)
的任何實例都只是(n * n)
。
顯然這是一個簡單的例子,但我想知道constexpr
在哪裏發揮作用?它是否意味着用於比簡單文本替換更復雜的操作?使用它的主要優點是什麼?它與正常表達式有什麼不同?
'squared(i ++)'... – 2014-10-27 08:43:54
或'squared(1 + 1)'...... – Henrik 2014-10-27 08:49:40
@Henrik好的,但是可以通過在內部使用'(n)'來獲得幫助,所有「理智的宏「(就像那個表達所表達的那樣是矛盾的)。 – Angew 2014-10-27 08:52:54