小编Buc*_*k B的帖子

如何为可变参数模板使用“using”关键字

我有一个可变参数模板类,它可以在构造函数中使用任意数量的变量,还有 astd::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)...) {};
};
Run Code Online (Sandbox Code Playgroud)

现在在第三堂课中,我想像这样声明使用:

template <typename F>
class dummy
{
    using Output = typename OutputType(typename F::Output));
}
Run Code Online (Sandbox Code Playgroud)

我如何声明上面的 using 语句,以便它也为 做正确的事情dummy<f2>

(即OutputType<double,int>而不是OutputType<std::tuple<double,int>>

c++ variadic-templates c++11

4
推荐指数
1
解决办法
1101
查看次数

标签 统计

c++ ×1

c++11 ×1

variadic-templates ×1