RoboMaster / RoboRTS

An open source software stack for Real-Time Strategy research on mobile robots
Other
823 stars 347 forks source link

A Question about the implementation of algorithm factory #53

Open KenSporger opened 3 years ago

KenSporger commented 3 years ago

I am very interested in the implementation of the algorithm factory in this framework.It's a wonderfull idea to use templates.Now, I have a doubt about the function Register in class AlgorithmRegister(as you see below),

template <int... Is>
  void Register(std::string algorithm_name, int_sequence<Is...>) {
    auto function = std::bind(&AlgorithmRegister<AlgorithmBase, Algorithm, Args...>::create,
                              std::placeholder_template<Is>{}...);
    AlgorithmFactory<AlgorithmBase, Args...>::Register(algorithm_name, function);
  }

Instead of passing the function create directly, it uses bind to wrap it. Such practice leads to a dependency on int_sequence and placeholder_template, making the code complicated. So I rewrite it as follow:

void Register(std::string algorithm_name) {
    AlgorithmFactory<AlgorithmBase, Args...>::Register(algorithm_name, &AlgorithmRegister<AlgorithmBase, Algorithm, Args...>::create);
  }

Would it be better choice?How did the engineer consider it at that time?