c++ - std::apply 到模板函数中的构造函数

标签 c++ templates tuples

<分区>

我正在编写通用代码,我需要使用通用可变参数元组调用通用模板参数 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/

相关文章:

list - Haskell 将元组列表映射到元组列表

python - 为什么以下声明不一样?

pattern-matching - 元组的匹配

不同文件中的 C++ 类问题

c++ - 用于序列化的 DOM 或 SAX

c++ - c++将equal_to设置为模板类的默认模板参数

c++ - 如何干净地将虚拟调用从非模板化父级分派(dispatch)到模板化子级

c++ - 删除模板类型

c++ - 如何使用两种不同的返回类型重载 []

c++ - Base64解码错误