我有一个可变参数模板类,可以在构造函数中接受任意数量的变量,也可以接受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));
}
如何声明上述使用语句,以便它也适用于
dummy<f2>
?(即
OutputType<double,int>
而不是 OutputType<std::tuple<double,int>>
)
f1
的代码吗?你的代码包含了很多排版错误... 你在这里需要做的可能是为std::tuple
特化dummy
。 - Holt