C_and_CPP 板


LINE

這也是我在實務上無法想到用途的一個語法(也是知道它的意思 但還是不知道啥時該用) https://en.cppreference.com/w/cpp/language/reference 2) auto&& except when deduced from a brace-enclosed initializer list: 這邊寫到 for (auto&& x: f()) { // x is a forwarding reference; this is the safest way to use range for loops } 為什麼說這是最safest的? 如果只是readonly 的話寫const auto&不是更好? 另外是他寫 auto&& z = {1, 2, 3}; // *not* a forwarding reference (special case for initializer lists) 為什麼說"不是"? https://ideone.com/fYlKY4 這樣驗證感覺就一樣啊? special在哪? 但看完還是不知道什麼時候必須用auto&& 如果說 一個函數 Type Func(); 我用auto&& temp = Func(); or auto temp = Func(); 然後把它std::move(temp) 給其他函數 前者可能少一次move construct 但印象中有文章說 這樣反而會讓optimization 受限? 但其實實務上比較會寫 const auto& temp = Func(); 然後在copy給其他函數 這樣寫起來反而變成一定要用copy了? 這樣有了move 是不是根本就不要加上const& 而是都用auto temp = Func(); 這樣來反而好? 問題都是從 https://en.cppreference.com/w/cpp/utility/any/any_cast 我不知道要寫auto temp = std::any_cast<....>(...); 還是加上&& 以上諸多盲點 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.13.96
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1551106734.A.A14.html ※ 編輯: lovejomi (110.28.13.96), 02/25/2019 23:11:54
1F:→ loveme00835: 你是看 cppreference 學希佳佳嗎? 02/26 00:21
2F:→ lovejomi: 不是 但想找資料卻看到奇怪註解 02/26 09:32
3F:→ loveme00835: 那你想想第一個例子如果遇到 InputRange 該怎麼辦. c 02/26 09:53
4F:→ loveme00835: onst auto& 終究是 l-value ref 雖然可以綁定 xvalue 02/26 09:53
5F:→ loveme00835: , 但其伴隨著 “物件一直都會存在” 的語意, 等於你 02/26 09:53
6F:→ loveme00835: 欺騙了使用 x 的人 02/26 09:53
7F:→ lovejomi: 所以如果我就算readonly也不該用const來欺騙?可是另一 02/26 11:18
8F:→ lovejomi: 方面auto看起來比auto&&更適合? 02/26 11:18
9F:→ loveme00835: 這要看你接的是不是 xvalue, auto&& 跟 auto 差在有 02/26 12:14
10F:→ loveme00835: 無 copy, 很少有絕對比較好的寫法, 都是各種 trade 02/26 12:16
11F:→ loveme00835: off, 你還需要再多了解語言才來談這些 02/26 12:16
12F:→ lovejomi: xvlaue 的話應該是copy(move)比較合適? 02/26 18:58
13F:→ lovejomi: 但還是不懂我這篇問的兩個cppreference的問題 ... 02/26 18:59
14F:→ loveme00835: https://wandbox.org/permlink/LD7o1DtjyfQ4h7ja 02/26 21:35
15F:→ loveme00835: 因為關鍵字都給你了你沒查當然不懂 02/26 21:36
16F:→ loveme00835: forwarding ref 就是用來各種接, 然後接的時候保持原 02/26 21:38
17F:→ loveme00835: 本引數值的分類, 然後去做對應的動作, 也就是說當用 02/26 21:40
18F:→ loveme00835: auto&& 的時候, 目的就是以保留值為優先, 然後再用 02/26 21:41
19F:→ loveme00835: type traits 或靜態多型去處理. 你喜歡用 02/26 21:42
20F:→ loveme00835: std::as_const() 也隨便, 重點不是拿到的值可不可以 02/26 21:42
21F:→ loveme00835: move() 還是 readonly 這種很後面的問題, 你如果連拿 02/26 21:44
22F:→ loveme00835: 到的東西是什麼都不知道, 怎麼能做對合適的處理? 02/26 21:44
23F:→ loveme00835: https://wandbox.org/permlink/oKfggidG9EpM8XFo 02/26 21:56
24F:→ loveme00835: 對照組 02/26 21:56
25F:→ lovejomi: 我覺得svs.emplace_back(s這邊應該用std::forward)? 02/26 23:24
26F:→ lovejomi: 另外你的例子 "字串"s 針對這case 只是習慣還是有好處 02/26 23:34
27F:→ lovejomi: 不加不也是會implicit建構嗎? 還是這樣寫有額外好處呢@@ 02/26 23:35
28F:→ loveme00835: 兩個重點: 1) 用 const l-value reference 來接引數 02/27 00:06
29F:→ loveme00835: 需要保證物件不會在使用以前解構. 2) 保證 range 不 02/27 00:09
30F:→ loveme00835: 解構, 這不意味著用 range-based for (iterator) 取 02/27 00:11
31F:→ loveme00835: 來的元素也得到相同的保證 02/27 00:12
32F:→ loveme00835: 另外不會因為你沒寫 const auto& 就失去 constness, 02/27 00:13
33F:→ loveme00835: 只有 const 擺在 auto 裡面還是外面的差別, 然後買本 02/27 00:14
34F:→ loveme00835: 書好好看完 02/27 00:14
35F:→ lovejomi: https://wandbox.org/permlink/7qm5ZH9jvicEoMJE 02/27 00:32
36F:→ lovejomi: 請問為什麼會全部都是5呀? 02/27 00:33
37F:推 yilanP: loveme大大 可以請問一下用cppref學會怎樣嗎? 02/27 00:38
38F:→ hunandy14: 最後一個 auto temp =.. 看你的函式返回什麼值 02/27 12:17
39F:→ lovejomi: 目前看起來是range裡面的string 都是xvalue 所以存到sv 02/27 19:00
40F:→ lovejomi: 裡面的之後都被解構了,會印全5也只是剛好值還在? 02/27 19:00
41F:→ lovejomi: 至於為啥address都一樣 可否推測string對於短字串實作是 02/27 19:05
42F:→ lovejomi: 用stack不會allocate heap所以位址都一樣(stack上的位 02/27 19:05
43F:→ lovejomi: 址) 02/27 19:05







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP