1
引用說std::function::operator()
是const
。這個常量適用於什麼?如果std::function
是可調用對象的包裝,則此常量是否適用於此對象(也就是說它的operator()
也應該是const
?)。C++:什麼是std :: function constness的語義?
總體而言,std::function
對於不同類型的目標(lambda,函數指針,對象,成員函數等)是什麼意思?
感謝您澄清'operator()'。你能回答問題的第二部分嗎?例如,當我通過const引用傳遞'std :: function'時,這個常量是什麼意思? –
@DmitryJ目前,所有'const'語義都沒有意義,因爲調用操作符會拋出它(就像'const_cast'一樣)。一旦庫bug的問題得到解決,例如我的提議,那麼一個普通的'std :: function'甚至不會被'const'引用調用。 –
Potatoswatter
@Potatoswatter昨天當我不得不處理一個const std :: function並開始想知道如果調用操作符是const意味着,綁定對象/ member-func也必須是const時,我有完全相同的問題。答案是沒有必要,但我推論這是因爲常量只適用於std :: function的狀態,但如果綁定對象存儲爲成員變量,那麼我猜它所調用的成員func也必須是const ? – ForeverLearning