作者:
wtchen (沒有存在感的人)
2016-05-04 02:46:48本文大部份內容來自此網頁:
C++ Has Become More Pythonic
http://preshing.com/20141202/cpp-has-become-more-pythonic/
說到 param pack,昨天好奇去看了C++17 的 fold expr覺得這語法超神奇的XDDDC++在這幾年真的是不斷進化,都快不認識了
作者:
Neisseria (Neisseria)
2016-05-04 10:28:00建議板大連結不要放括號裡,會帶到瀏覽器,造成錯誤
作者:
exeex (執行檔EX)
2016-05-04 10:51:00推 for 對 vector的用法太實用了
作者:
bibo9901 (function(){})()
2016-05-04 11:28:00老實說你講的這幾點都不是python獨有/獨創
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2016-05-04 14:11:00沒人說這些是 Python 獨有/創新, 但 Python 是極少數擁有「全部」的語言 -- 現在 C++ 也加入這個榮譽俱樂部了希望 C++ 未來也能有 enhanced proposal 機制(打錯, 是 enhancement proposal)
lambda 是從 fp 來的,最早在 lisp 就已經有了.Java 是從 8 開始才有,但基本上現在的 Python,對 lambda 依賴已經沒有以前高,用型別運算產生式就行.另外,以前蔡學鏞推過一個 rebol.不過這幾年沒啥進步..如果對 C++ 難分難捨,那也許也可以留意一下 Rust
作者:
wtchen (沒有存在感的人)
2016-05-04 15:37:00有大大可以寫篇Rust跟C++的比較文嗎?保證不砍
作者:
bibo9901 (function(){})()
2016-05-04 15:58:00說得也是
作者:
CoNsTaR ((const *))
2016-05-04 15:59:00推 Rust
Parameter Packs 其實就是未指定參數名稱,就都算它的.比如 x= ,y= , a,b,c ,沒有 = 指定輸入值,就全給 *arg所以 func1 把 arg 前兩個換掉再丟進 func2 去配對.2 1一般看到的範例是 func1(x, *args) 這種型式.沒被指定參數名稱抓到的,就全送進 *arg
作者:
wtchen (沒有存在感的人)
2016-05-04 16:36:00C++11之後,C跟C++的分歧就越來越大了....
作者:
bibo9901 (function(){})()
2016-05-04 16:38:00其實可以更徹底一點XD 為了兼容C實在犧牲太大了..
python 3.x 還有 **args 抓進去直接配成 dict 的 k:v
作者: tuyutd0505 (Huang Jason) 2016-05-04 21:56:00
推 有些寫法第一次看到 學習了
作者:
laba5566 (最愛56家族 啾咪)
2016-05-04 22:43:00推
final跟override也不錯variadic template搭配多重繼承也蠻有趣的
作者:
shaopin (Brian)
2016-05-05 04:38:00for(auto&& i: v) // access by reference, the type of對這個有點問題, 如果auto&& 是by reference 那auto&呢?
作者:
red0210 (My Name Is Red)
2016-05-05 07:18:00推 寫得很棒
作者: Sylveon (ä»™åç²¾éˆ) 2016-05-05 12:01:00
大推~
作者:
CoNsTaR ((const *))
2016-05-05 12:07:00auto&&產生型態為右值ref的左值refauto&參考到一個左值 不產生新物件
作者:
Caesar08 (Caesar)
2016-05-05 12:22:00auto &是l value ref,auto &&是r value ref
不對,auto&&不是專門用在rvalue ref其中有用到跟template一樣的折疊規則
作者:
Caesar08 (Caesar)
2016-05-05 12:45:00對不起,我錯了。有具名的&&才是r value ref。auto &&是forwarding reference簡單來說,auto &&i:v要看v是l value還是r value。如果v是l value,那auto &&i就是int &i;如果v是r value,那auto &&i就是int &&i
作者:
shaopin (Brian)
2016-05-05 16:02:00請問什麼是有具名的&&?
作者:
Caesar08 (Caesar)
2016-05-05 16:09:00應該說,有具型態的才對。例如直接指定int &&,此時已經指定型態是int,而不是用auto幫你進行type deduction
注意const auto&&不適用折疊規則,此時就是rvalue ref跟template的推導規則一樣
作者:
CoNsTaR ((const *))
2016-05-05 17:46:00簡單的說,reference to rvalue 本身也是一個 lvalue
作者:
suhorng ( )
2016-05-05 19:01:00auto 跟重載那段有點怪, 這兩個沒關聯吧Python lambda 的語法限制有點詭異. Python 不太推lambda
作者:
wtchen (沒有存在感的人)
2016-05-05 19:04:00我自己是不太喜歡用lambda,太簡化的東西反而反應不過來
作者:
suhorng ( )
2016-05-05 19:05:00parameter pack 跟 variadic template 很不同吧?
作者:
Caesar08 (Caesar)
2016-05-05 19:19:00A template with at least one parameter pack iscalled a variadic template.
STL如果沒lambda,functor寫起來會很痛苦
Python也只是跟別人學來的,C++剛好學到一樣的部分而已z這些特性早在Ada,ML,Scheme就有了,他們都比Python老=.=
現代程式語言不都互相影響嗎,真要考古誰原創考不完w
作者:
os653 2016-05-06 19:34:00只求好寫、好偵錯、速度快又不用造輪子,誰抄誰不重要
作者:
ho83leo (LWHo)
2016-05-07 22:39:00推整理
作者:
rodion (r-kan/reminder)
2016-05-08 01:46:00推... 希望C++17把平行化也好好的弄出來:>
作者:
fr3ak (fr3@K)
2016-05-16 02:53:00跟 Python 背景的朋友聊天講到 C++ Templates 的時候, 常以compile-time dock-type 類比