函数组合-组合方法优化

C++ Functional Composition - Compose Methods Optimisation

本文关键字:组合 优化 方法 函数      更新时间:2023-10-16

我已经编写了自己的撰写方法,该方法适用于pod,如何优化此方法以处理复制成本高的用户定义类型?

#include <iostream>
template<typename T, typename U, typename V>
std::function<V(T&&)> compose(std::function<V(U)> f, std::function<U(T)> g)
{
    std::function<V(T&&)> result = [&](T&& value){
        return f(g(value));
    };
    return result;
}
int main(int argc, const char * argv[])
{
    std::function<int(int)> f = [](int v){ return v + 1;};
    std::function<int(int)> g = [](int v){ return v + 2;};
    std::function<int(int)> h = compose(f, g);
    std::cout << "compose(f,g): " << (h(5)) << std::endl;
    return 0;
}
布莱尔

答案是boost::call_traits<T>