<分区>
我正在编写通用代码,我需要使用通用可变参数元组调用通用模板参数 T
的构造函数:
T& init_and_return(ArgsTuple& args)
{
m_data = std::apply(&T::T, args); // here compiler complains
return m_data;
}
在我看来,T
将是一个名为A
的类型。
编译器说“A
中没有名为 T
的成员”。
如何以通用方式引用 T
的构造函数?
<分区>
我正在编写通用代码,我需要使用通用可变参数元组调用通用模板参数 T
的构造函数:
T& init_and_return(ArgsTuple& args)
{
m_data = std::apply(&T::T, args); // here compiler complains
return m_data;
}
在我看来,T
将是一个名为A
的类型。
编译器说“A
中没有名为 T
的成员”。
如何以通用方式引用 T
的构造函数?
最佳答案
构造函数不像其他方法那样是函数或方法——它很特殊,您不能获取它的地址。我个人认为这应该是可能的,但事实并非如此。
C++ 标准有 make from tuple ,它可以满足您的需求。
m_data = std::make_from_tuple<T>(args);
关于c++ - std::apply 到模板函数中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891782/