当元组没有任何构造函数时如何从元组构造对象

问题描述 投票:0回答:2

如果我有一个具有已定义构造函数的类:

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
实现?是否可以使用其他任何东西来达到相同的结果?

c++ constructor tuples
2个回答
2
投票

您可以使用

std::apply
from_coordinates
呼叫
std::tuple
。 那看起来像

auto point = std::apply(Point::from_coordinates, tuple);

0
投票

std::make_from_tuple
可以做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.