我目前正在为处理器开发一个简单而抽象的模拟器,我正在使用一个表将机器代码操作码转换为动作。目前,该表包含指向委托函数的指针(由外部库提供),这是我当时(在C ++ 11之前)唯一可以调用子类实例的成员函数的选项。
到目前为止,Lambdas看起来可以提供完美的替代品,但我仍然希望支持vanilla函数指针。关于lambdas的这个教程展示了一个例子,你可以相同地处理lambdas和函数指针,但我想知道是否可以存储函数指针和lambdas的混合数组,所以我也可以将它们存储在同一个地方。
答案 0 :(得分:4)
std::function是一种为所有可调用事物进行类型擦除的机制。
你可以拥有一个std :: function的集合,并在带有该签名的lambdas旁边放入带有该签名的函数指针。与直接使用函数指针相比,涉及一些开销。值得注意的是,lambda的类型没有由规范指定,因此不能直接写下来,但它总是可以放在std :: function包装器中。