委托的工厂函数调用 - 找不到正确的语法

Delegated factory function call - cannot find the proper syntax

我想将工厂函数指针和可变长度参数传递给函数,但找不到正确的语法。像这样:

#include <memory>

struct Ressource {
    int a;
    float b;

    static std::shared_ptr<Ressource> make(int _a, float _b) {
        return std::shared_ptr<Ressource>(new Ressource(_a, _b));
    }

private:
    Ressource(int _a, float _b) : a{ _a }, b{ _b } {}
};

template<typename R, typename... Args>
void delegate_(std::shared_ptr<R>(R::*factory)(Args...), Args... args) {
    std::shared_ptr<R> ressource = factory(args...);
}

void test() {
    delegate_(&Ressource::make, 1, 3.0f);
}

我得到 (msvc):错误 C2064:[法语错误:]

谢谢。

工厂方法 make 应该是 Resource 的静态成员。然后 delegate_ 将只接受一个指向函数的指针,而不是一个指向成员函数的指针,然后它就可以调用工厂函数。当前实现的问题是,为了从 delegate_ 中调用 factory,您需要提供一个 Resource 对象来调用它。