我有一个可变参数模板类,可以在构造函数中的任何数量的变量,也是一个std::tuple/std::pair
等等。如何使用“使用”关键字的可变参数模板
我想用这种包装的功能具有不同的返回类型。
例如:
class f1
{
using output = double;
output operator() { do_smth };
}
class f2
{
using output = std::tuple<double,int>;
output operator() { do_smth };
}
template <typename... Types>
class OutputType
{
std::tuple<Types...> m_val;
public:
OutputType(std::tuple<Types...>&& val) : m_val(val) {};
OutputType(Types&& ... val) : m_val(std::forward<Types>(Types)...) {};
};
现在,在第三类,我想用这样的声明:
template <typename F>
class dummy
{
using Output = typename OutputType(typename F::Output));
}
如何申报上述所以它的正确的事情也using语句为dummy<f2>
?
(即OutputType<double,int>
,而不是OutputType<std::tuple<double,int>>
)
你可以提供一个代码,至少工作'f1'?你的代码包含大量的印刷错误...你需要的可能是为'std :: tuple'专门设计'dummy'。 – Holt
您可能可以将元组转换为包并将该包发送到'OutputType'。不知道如何看起来。尽管将元组转换为参数包,但这里已经有很多东西了。 – NathanOliver