std ::应用于模板化函数中的构造函数

nya*_*108 2 c++ templates tuples

我正在编写通用代码,并且需要T使用通用可变参数元组调用通用模板参数的构造函数:

T& init_and_return(ArgsTuple& args)
{
    m_data = std::apply(&T::T, args); // here compiler complains
    return m_data;
}
Run Code Online (Sandbox Code Playgroud)

在我的主体中,T将有一个叫做的类型A。编译器说:“没有名为成员TA”。

如何T以通用方式引用的构造函数?

Yak*_*ont 9

构造函数不是函数或方法,就像其他方法一样,它是特殊的,您不能使用其地址。我个人认为应该可行,但事实并非如此。

C ++标准由tuple组成,它可以满足您的需求。

m_data = std::make_from_tuple<T>(args);
Run Code Online (Sandbox Code Playgroud)

  • @Fureeish当然,这是正确的,这是最好的一种。 (2认同)