如果我有一个具有已定义构造函数的类:
class Point
{
public:
Point(int x, int y);
// ...
};
还有一个
std::tuple
:
using Tuple = std::tuple<int,int>;
我可以通过调用
std::make_from_tuple
: 使用元组构造类
void f()
{
Tuple tuple = {1,2};
auto point = std::make_from_tuple<Point>(tuple);
}
如果例如我的类仅使用工厂方法并且没有定义的构造函数:
class Point
{
Point() = delete;
public:
static Point from_coordinates(int x, int y);
// ...
};
显然我无法自定义
std::make_from_tuple
使用其他任何东西来充当构造函数。
STL 或 Boost 中是否有更通用的
std::make_from_tuple
实现?是否可以使用其他任何东西来达到相同的结果?
std::apply
与 from_coordinates
呼叫 std::tuple
。 那看起来像
auto point = std::apply(Point::from_coordinates, tuple);
std::make_from_tuple
可以做到这一点。