小编Fed*_*ati的帖子

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

我正在为一个机器学习库编写一些模板化的类,我很多时候都面临这个问题.我主要使用策略模式,其中类接收作为不同功能的模板参数策略,例如:

template <class Loss, class Optimizer> class LinearClassifier { ... }
Run Code Online (Sandbox Code Playgroud)

问题在于构造函数.随着策略量(模板参数)的增长,const引用和右值引用的组合呈指数级增长.在前面的示例中:

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)) {}
Run Code Online (Sandbox Code Playgroud)

有没有办法避免这种情况?

c++ rvalue-reference const-reference c++11

41
推荐指数
4
解决办法
2082
查看次数

标签 统计

c++ ×1

c++11 ×1

const-reference ×1

rvalue-reference ×1