免責聲明:這個問題有點複雜,因爲它是一個問題,但它們都涉及到同一種概念/問題。C++編譯器可以緩存constexpr函數的結果嗎?
前提: consexpr
功能可能僅由單個return
聲明。
它們可以調用其他函數和使用條件,但理論上它們應該展示功能的純度,因此結果應該在某種映射中可以緩存(由編譯器在編譯時),這樣編譯器就沒有不斷重新評估相同的功能。
問題(S): 這是假設是正確的或者是有什麼我還沒有考慮,使得它不可能緩存constexpr
函數的結果? 如果不是,這是否意味着每次使用函數時都必須計算constexpr
函數?
template
怎麼樣? template
可以緩存的值是constexpr
還是每次都必須重新計算?
通常可以在編譯時評估'consexpr'函數;這是練習的重點。在那種情況下,可執行代碼最終只是通過評估函數調用的結果,而不是函數本身的代碼。這是最終的緩存。或者你問編譯器是否可以在編譯時優化多個評估?可能,但我不知道你爲什麼在意。 –
你爲什麼要在意?它對你的程序有什麼不同? –
@IgorTandetnik我的意思是編譯器假定函數是純粹的,使用映射緩存給定輸入的結果,並從此開始查閱緩存(即映射),而不是不斷重新評估函數? – Pharap