這個問題在這里已經有了答案: constexpr 是新的行內嗎? (3 個回答) 19 天前關閉。
編譯器是否可以評估未constexpr在編譯器時標記為的函式,或者所有constexpr沒有行內的函式只能在運行時評估?
uj5u.com熱心網友回復:
允許編譯器在編譯時評估某些函式,即使沒有標記為constexpr, yes。例如:
int foo() {
int result = 0;
for (int i = 1; i <= 100; i ) result = i;
return result;
}
const int s = foo();
編譯器可以s通過簡單地給它的值 5050來優化初始化。
但是,編譯器不允許您將 的結果foo()用作模板引數(就像您只是撰寫了5050),因為它不是有效的常量運算式。它必須發出診斷。
換句話說,constexpr不控制是否可以在編譯時評估函式。它控制是否允許在需要常量運算式的背景關系中呼叫函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368076.html
上一篇:如何直接從輸入流中插入值?
下一篇:如何從C 的輸入中獲取特定數字?
