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