首页 > 解决方案 > std::apply 应用于模板函数中的构造函数

问题描述

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

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

在我的主要T类型中,将是一个名为A. 编译器说“没有在中命名T的成员A”。

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

标签: c++templatestuples

解决方案


构造函数不像其他方法那样是函数或方法——它是特殊的,你不能获取它的地址。我个人认为应该可以,但事实并非如此。

C++ 标准具有make from tuple,它可以满足您的需求。

m_data = std::make_from_tuple<T>(args);

推荐阅读