c++ inline variable 內聯變數 c++17
好象是C++17的新特性。
看http://en.cppreference.com/w/cpp/utility/in_place 這個的時候發現裡面的 變數模板(C++17新特性) 前面加了inline修飾,
查中文結果沒多少。英文的倒是已經有人討論了。
說inline variable起到和inline function 類似的作用,“多個翻譯單元的定義最終只保留一個,保證是相同的”
所以用inline修飾以後,許多以前不能在標頭檔案定義的東西,可以寫在標頭檔案裡了。
比如說類的static成員可以直接初始化了,因為用了inline,所以不會多重定義
還有什麼inline static constexpr的事項。。
注意這裡和inline提示函式優化的意思沒什麼關係,搞不清的見下面紅字
https://stackoverflow.com/questions/38043442/how-do-inline-variables-work
草案N4640 7.16 提到了inline可以用作修飾variable,其他地方懶得翻了,看了看上面那個網頁,大概知道效果和inline對函式的效果差不多。
完蛋。。仔細一深究,發現以前的理解太不到位了。。
才恍然大悟,應該是這麼個意思
inline 修飾符保證了一個限制語義,即 “在每個翻譯單元內的定義,最終只保留一個,保證定義總是相同的”,這個約束對不管是inline variable 還是inline function都起作用。
而對於inline function,inline 還起到了一個提示編譯器,可對此函式進行程式碼展開的優化的作用(這就是常說的inline 的作用)
但是優化不優化不影響其限制語義,這兩個是兩碼事!!!!
(實際上優化了,也是都展開成一樣的,所以inline只保證其限制語義)