【问题标题】:Reinterpret template type at compile time在编译时重新解释模板类型
【发布时间】:2015-07-10 11:08:58
【问题描述】:

我想创建一个基本上包含私有属性的类:

template<typename TA, typename T2, ... Tn> // Use something like <typename... Tn> ?
class A
{
    public:
    A(){};
    ~A(){};

    std::tuple<std::vector<std::reference_wrapper<T1>>, std::vector<std::reference_wrapper<T2>>, ...> t;
};

但我希望能够写一些简单的东西,例如:

A<int, double, std::string> a;

它会自动构建相应的:

std::tuple<std::vector<std::reference_wrapper<int>>, std::vector<std::reference_wrapper<double>>, std::vector<std::reference_wrapper<std::string>>> t;

(对于元组中的任意数量的参数)

所以我只想将任何 T 转换为 std::reference_wrapper 并将其传递给元组。 我怎样才能做到这一点 ? 谢谢!

【问题讨论】:

    标签: c++ tuples variadic-templates c++14


    【解决方案1】:

    只需展开包:

    template <typename ...Args>
    struct Foo
    {
        std::tuple<std::vector<std::reference_wrapper<Args>>...> t;
    };
    

    【讨论】:

    • 哇哦,我不知道我们可以这样解压,太方便了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2014-12-09
    • 2014-03-31
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多