所以我有一个聚合类Foo
,它接受可移动和(间接)可复制的参数(一个名为Image_t
和 a的类std::unique_ptr<Map>
,并且 Map 可以克隆自己)。
我想给最终用户如何创建课程的灵活性。所以我有一个“类复制”构造函数和一个“类移动”构造函数:
typdef std::unique_ptr<Map> MapPtr;
///
///@brief Copy build constructor
///
Foo(const Image_t& image, const MapPtr& map_ptr) :
image_(image),
geo_locatormap_(map_ptr->clone())
{
}
///
///@brief Move build constructor
///
Foo(Image_t&& image, MapPtr&& map_ptr) :
image_(std::move(image))
geo_locatormap_(std::move(map_ptr))
{
}
现在理想情况下,我也想拥有Foo(const Image_t& image, MapPtr&& map_ptr)
,Foo(Image_t&& image, const MapPtr& map_ptr)
但我觉得这是在重复努力。有没有快速的方法来做到这一点?还是这种类型的构造函数不受欢迎?