【问题标题】:How to convert a l-value tuple type to value tuple type?如何将左值元组类型转换为值元组类型?
【发布时间】:2014-10-19 02:23:45
【问题描述】:

任何类型特征都可以帮助将左值元组类型转换为值元组类型。例如,通过删除引用将std::tuple<int&, double&> 转换为std::tuple<int, double>

【问题讨论】:

    标签: c++ c++11 tuples typetraits


    【解决方案1】:

    对于元组实例(根据 dyp 的评论编辑):

    template <typename... Ts>
    std::tuple<Ts...> remove_tuple_ref(std::tuple<Ts&...> x)
    {
        return {x};
    }
    

    【讨论】:

    • 好吧,你不再需要类型特征了......但是这个技巧要求所有元组类型都是引用。
    • @dyp 我之前的编辑不会处理所有被引用的元组类型吗?
    • 您的原始版本可以扩展以处理非引用元组元素。 (压缩版template&lt;class... Ts&gt; std::tuple&lt; std::remove_reference_t&lt;Ts&gt;... &gt; remove_tuple_ref(std::tuple&lt;Ts...&gt; x) { return {x}; }也是如此)
    • @dyp 抱歉,我的意思是我之前的编辑不会处理 not 所有元组类型都是引用吗?我看不出“扩展”示例与我的原始答案有何不同。
    • 啊,是的,我对修订感到困惑。
    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2020-04-11
    相关资源
    最近更新 更多