謝謝L大解惑
但我還是有觀念不太明白
explicit是我故意寫上去想確認觀念
1. 光寫 [f2] 這樣 , "f2 繼承自它抓取的變數的常數性" 這是規則嚕?
所以他並不是[f2=f2] 也不是[f2(f2)] 而是compiler內部自己會想辦法複製
(會說想辦法是因為我自己無法複製, 問題二)?
2. http://ideone.com/JzEnVF
因為我刻意寫explicit, 我預期他[f4=f3] 會不給過 [f4(f3)] 會給過
但結論他的error code都一樣
為什麼他規則會是這樣?
那不就變成我根本無法capture by value 一個copy cstr 寫explicit的物件嗎?
謝謝
作者:
LPH66 (-6.2598534e+18f)
2016-10-30 12:11:001. 這個是我回文裡那個連結提到的, 我不確定標準是不是這樣2. [f4=f3] 或 [f4(f3)] 這種帶初始化的 capture會如上所言當做有個 auto 在那裡, 那這就跟一般變數宣告和初始化一樣; 同樣的 class 你也無法使用這種方式喔, 仔細看了一下, f4(f3) 理論上要給過, 這我要看看..嗯, 我想了一下應該是不行, 這裡理論上還是隱式複製因為你藉由宣告 lambda 把一個外面的物件給隱式複製到lambda class 裡面去了, 這個複製是隱式的所以會被 explicit 擋掉; 話說回來, 現在好像也沒有explicit copy ctor 的用途了所以...1. 回頭看了連結, 這是標準規定無誤; 裡面有引用了標準原文