我有以下课程:
template<typename Population, typename... Operators> class GA
{
public:
template<typename Evaluator,
typename std::enable_if_t<
std::is_same_v<Evaluator, Evaluator<Operators...>>>>
void EvaluatePopulation(Evaluator& evaluator)
{
evaluator.Evaluate();
}
};
由于EvaluatePopulation
声明不正确,因此无法编译。
我如何指定EvaluatePopulation
只能使用与该类Evaluator
相同的初始化类来调用方法?Operators...
GA
诀窍是使用模板模板参数,以便您“解包”求值器的模板参数以匹配 GA 的包。例如,您可以编写:
((查看现场演示))
或者,使用c++20的概念,它可以提供更清晰的错误消息:
((查看现场演示))