【发布时间】:2019-07-04 16:37:39
【问题描述】:
我正在编写泛型代码,我需要使用泛型可变参数元组调用泛型模板参数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的构造函数?
【问题讨论】:
-
无论类型是否为模板参数,都无法获得指向构造函数的指针。
-
@interjay 使用 std::apply 和构造函数的任何解决方法?
-
这里是如何从 args 元组stackoverflow.com/questions/14897527/…构造一个对象
-
@Renat 没有更可读的方式在 C++17 中实现相同的目标?
-
std::apply([](auto&&... args2) { return T{std::forward<decltype(args2)>(args2)...}; }, args);就足够了,但 Yakk 的回答更好。