Tag: const reference

避免构造函数中的const引用和右值引用的指数增长

我正在为一个机器学习库编写一些模板类,而且我很多时候都面临着这个问题。 我主要使用策略模式,其中类接收作为不同function的模板参数策略,例如: template <class Loss, class Optimizer> class LinearClassifier { … } 问题在于构造函数。 随着策略数量(模板参数)的增长,const引用和rvalue引用的组合指数级增长。 在前面的例子中: LinearClassifier(const Loss& loss, const Optimizer& optimizer) : _loss(loss), _optimizer(optimizer) {} LinearClassifier(Loss&& loss, const Optimizer& optimizer) : _loss(std::move(loss)), _optimizer(optimizer) {} LinearClassifier(const Loss& loss, Optimizer&& optimizer) : _loss(loss), _optimizer(std::move(optimizer)) {} LinearClassifier(Loss&& loss, Optimizer&& optimizer) : _loss(std::move(loss)), _optimizer(std::move(optimizer)) {} 有没有办法避免这种情况?