去英國晃了一圈,回來還是寫點東西,免得生疏了
static_assert
沒什麼好說的,就是static_assert改成允許單參數,直接看程式碼
Before C++17
1 | static_assert(sizeof(short) == 2, "sizeof(short) == 2") |
After C++17
1 | static_assert(sizeof(short) == 2) |
Inline Variables
對Header-Only library特別有用,不過我不喜歡Header-Only library
原先如果要定義一個變數,要在header宣告,在source code裡面定義
現在可以直接寫在header裡了
Before C++17:
1 | // foo.h |
After C++17:
1 | // foo.h |
constexpr labmda
原先C++14辦不到,C++17允許的能力
1 | constexpr int Func(int x) |
不過我還沒想到這東西可以做啥
capture [*this]
原本我還搞不懂capture [this]
和capture [*this]
有什麼不同,自己寫了一個範例之後搞懂了
1 |
|
capture [*this]
相當於上面的[self = *this]
,會將原有的物件複製一份
而[this]
不會
More Attributes
C++11引進了Attribute,在C++17增加了更多attributes,如[[fallthrough]]等
就是把GCC/VC的attribute標準化,不多做解釋了
Rest
至於STL的加強就不特別寫了, Guaranteed Copy Elision可能要另外寫
就先寫到這了