Я бы хотел передать указатель фабричной функции и аргументы длины c переменной в функцию, но не могу найти правильный синтаксис. Примерно так:
#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);
}
Я получаю (msv c): ошибка C2064: [ошибка следует на французском языке:]
Спасибо.