给定此示例代码,如何使用pars
调用构造函数以创建Foo2D
对象?
#include <boost/hana/tuple.hpp>
#include <boost/hana/unpack.hpp>
class Foo2D {
public:
Foo2D(int x, int y):m_x(x), m_y(y) {}
private:
int m_x;
int m_y;
};
int main() {
auto pars = boost::hana::make_tuple(10, 20);
Foo2D foo1(10, 20); //my intention
Foo2D foo2 = boost::hana::unpack(pars, Foo2D); //fails
}
最佳答案
构造函数不是函数或函子。您可以使用lambda或常规函数:
boost::hana::unpack(pars,
[](auto&&... args) {
return Foo2D(std::forward<decltype(args)>(args)...);
});