1樓:歐文韜
c++14和c++17基本上增加的都是語法醣類的工具呀。你就自然地用唄,等碰上問題,發現c++17剛好有解決方案的語法糖,誒就看懂了。
2樓:Jason於航
緩和點:先按照 11 和 14 的語法寫,然後再做漸進增強,說白了就是重構。重構遵循從小到大原則,先改小 feature,再考慮大模式。
激進點:直接維基百科了解下 17 的改動,然後新專案選擇性使用。20 的改動主要是 Big Four 比較 radical,依舊還是先了解再用。
但暫時來看能完全用到 17 和 20 特性的專案還不多(只是據我了解,可能並不全面),所以在新特性的用法上有沒有什麼坑需要注意、或者最佳實踐可以利用還是值得考慮的。畢竟曾經基於 11 的特性就衍生出來很多模式。
3樓:一鳴道長
棄暗投明解君憂
4樓:粉蒸排骨
再難、再晦澀的語法,也是人制定的,也是給人看、給人用的。
我一開始接觸「偏特化」、「全特化」、trait、lambda等等概念時,也覺得有點艱深。
無他,各個擊破。從乙個概念、乙個特性著手,乙個個地單獨理解、試驗。
不要一鍋燉!
等每個概念都理解了,再根據需求組合運用。
5樓:XZiar
而且我尋思著C++11到C++17,語法風格上也沒大改啊,怎麼會看不懂。
其中書寫格式發生的大改變我覺得也就這幾個:
constexpr if
if 語句 - cppreference.comstructure binding
結構化繫結宣告 (C++17 起)
CTAD
類模板實參推導(C++17 起)
fold expression
摺疊表示式(C++17 起) - cppreference.com其他的感覺都是庫更新為主。而且前面列出的幾個常不常用還不好說。
按理說不應該看不懂,可能是你看的專案不太對(一些庫級別的專案,別說C++17了,給你C++11甚至C++03都很繞很晦澀),也可能是你對C++11的了解不深(比如知道有lambda,但沒想到lambda遍地開花)。
至於C++20,我覺得目前沒必要趕這個潮流——你用的編譯器特性支援全了嗎……
6樓:裴浩
github 上有人做了 11/14/17/20 的新 feature 列表:
C 11 的move語義,從語言功能正交性來看,是一種必須的語義嗎?
圓形畢露 Move語意不是必須的,它的作用是為了提高程式效率。Move語意和右值有關,在C 11中,編譯器能夠根據函式引數是左值還是右值決定呼叫copy constructor還是move constructor。右值從狹義上說就是沒有identity的表示式,比如匿名物件,通過隱式轉換的物件.這些...
c 11中std unique ptr需要明確知道型別的析構函式,而shared ptr不需要?
土地測量員 詳細講一下std unique ptr的部分吧。std unique ptr需要明確知道型別的析構函式 unique ptr型別是 template class T,class Deleter std default delete class unique ptr private T p...
C 11為什麼引入nullptr?
徐辰 因為C 他爹早就看0這個magic number不爽了,當年沒顧上搞,一直拖到2011年了,再不瘋狂一把C 就沒人用了。 enpeng xu 問題的關鍵是c 不知道怎麼正確做void 到 T 的預設轉換,所以多此一舉的引入了nullptr。某些情況做下c 編譯器不知道怎麼把 void ptr正...