我的问题涉及在 C++ 中对函数包装器应用内联优化,考虑以下代码,WorkerStructure 对象是使用封装了一些功能块的函数包装器初始化的。然后在调用 WorkerStructure::doSomeWork 方法时使用函数包装器。
workerFunction 对象封装的功能在应用于 WorkerStructure::doSomeWork 方法时会被内联吗?显然如果功能是在其他翻译单元中定义的,workerFunction 对象只封装了一个函数指针,是否还有其他情况可以内联?不可能吗?
当通过函数包装器传递在不同翻译单元中定义的 lambda 函数时,它实际上等效于传递函数指针吗?
struct WorkerStructure
{
WorkerStructure(std::function <bool(float)> &f):workerFunction(f) {}
void doSomeWork(float inputValue)
{
if(workerFunction(inputValue))
{
//do some conditional operation
}
}
std::function <bool(float)> workerFunction ;
};