在this question中,OP聲稱main
函數中的第三行將返回值std::bind
轉換爲std::function
。是否有可能將std :: bind的返回值轉換爲std :: function而不進行構造?
但是,它看起來像一個簡單的構造函數調用給我。
實際上是否有合法的方法cast返回值std::bind
到std::function
沒有構造一個新的對象?
或者,是否將(std::bind
)返回值的地址轉換爲std::function*
然後通過引用它來調用它的kosher(而不是未定義的行爲)?
假設我知道std::function
的適當模板參數。也就是說,假設它們是相同的模板參數,如果我們從std::bind
的返回值構造std::function
的實例,將會使用它們。
在什麼情況下不能轉換?我目前的理解是,它總是可以轉換,但如果我誤解了我想知道的標準。 – merlin2011
如果你通過'std :: move'綁定非拷貝類型的值(例如'std :: unique_ptr')。因此,綁定對象變成不可複製的,但是'std :: function'是。 –