2014-05-08 59 views
7

據我所知,在編譯時可以使用constexpr變量。 例如對於模板或靜態asser。靜態const和constexpr變量有什麼區別?

但是如果我想這樣做沒有constexpr我可以用static const

什麼是因爲C++ 11引入constexpr的區別/ 14

之間
constexpr int a = 3; 
//AND 
static const int a = 3; 

謝謝!

看到這個問題的另一種方法是應該使用哪一種?

+5

它非常依賴*你在哪裏*有聲明。靜態限定符在不同的地方做不同的事情。 –

+0

'constexpr'也適用於非'int's。 –

+4

@KerrekSB值得一提,'const'也是如此。 –

回答

10

我知道的主要區別是,編譯時必須知道constexpr的值,而在運行時可以分配const static

const static int x = rand(); 
+0

好的,所以對於我寫的使用沒有區別,這只是針對動態初始化變量(就像第一次評估函數的作用域一樣)? – dzada

相關問題