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