久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

boost::combine,基于范圍的和結構化綁定

boost::combine, range-based for and structured bindings(boost::combine,基于范圍的和結構化綁定)
本文介紹了boost::combine,基于范圍的和結構化綁定的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

有沒有辦法讓 boost::combine 與結構化綁定和基于范圍的 for 一起工作(這樣結構綁定中的標識符實際上指向容器的元素而不是嵌套的任何 boost::combine 在幕后使用)?以下(live example)無法編譯:

Is there a way to make boost::combine work with structured bindings and range-based for (so that identifiers in the structure binding actually point to containers' elements instead of nested tuples of whatever boost::combine uses under the hood)? The following (live example) fails to compile:

#include <boost/range/combine.hpp>
#include <iostream>

int main()
{
    std::vector<int> a{1,2,3};
    std::vector<int> b{2,3,4};

    for (auto [f, s] : boost::combine(a, b))
    {
        std::cout << f << ' ' << s << std::endl   
    }
}

推薦答案

真正的答案是使用 boost::tie 或抓取 range-v3 zip() 這實際上產生了一個 std::tuple.

The real answer is to use either boost::tie or grab the range-v3 zip() which actually yields a std::tuple.

僅用于教育目的的答案只是調整 boost::tuples::cons 的結構化綁定機制.該類型已經有一個 get() 與 ADL 一起工作并做正確的事情,所以我們需要做的就是提供 tuple_sizetuple_element(這最終真的很容易做到,因為 Boost 中已經存在這些確切的特征):

The for educational purposes only answer is just to adapt the structured bindings machinery for boost::tuples::cons. That type already has a get() which works with ADL and does the right thing, so all we need to do is provide tuple_size and tuple_element (which ends up being really easy to do since these exact traits already exist in Boost):

namespace std {
    template <typename T, typename U>
    struct tuple_size<boost::tuples::cons<T, U>>
        : boost::tuples::length<boost::tuples::cons<T, U>>
    { };

    template <size_t I, typename T, typename U>
    struct tuple_element<I, boost::tuples::cons<T, U>>
        : boost::tuples::element<I, boost::tuples::cons<T, U>>
    { };
}

但實際上不要在實際代碼中這樣做,因為實際上只有類型作者應該選擇加入這種事情.

But don't actually do that in real code, since really only the type author should opt-in to this kind of thing.

這將使結構化綁定正常工作.

That'll make the structured binding just work.

這篇關于boost::combine,基于范圍的和結構化綁定的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

What do compilers do with compile-time branching?(編譯器如何處理編譯時分支?)
Can I use if (pointer) instead of if (pointer != NULL)?(我可以使用 if (pointer) 而不是 if (pointer != NULL) 嗎?)
Checking for NULL pointer in C/C++(在 C/C++ 中檢查空指針)
Math-like chaining of the comparison operator - as in, quot;if ( (5lt;jlt;=1) )quot;(比較運算符的數學式鏈接-如“if((5<j<=1)))
Difference between quot;if constexpr()quot; Vs quot;if()quot;(“if constexpr()之間的區別與“if())
C++, variable declaration in #39;if#39; expression(C++,if 表達式中的變量聲明)
主站蜘蛛池模板: 国产黄色免费视频 | 成人在线视频网 | 日韩欧美三级 | 国产欧美日韩在线观看 | 欧美精品一二三区 | 一区二区不卡 | 成年人视频在线播放 | 成人高潮片免费网站 | 国产精品99久久久久久久久久久久 | 国产综合在线视频 | 伊人网在线观看 | 欧美日韩精品一区 | 成人福利视频在线观看 | 91亚洲精选 | 五月开心激情网 | 亚洲无人区一线二线三线 | 国产精品视频免费 | 午夜激情在线 | 精品久久久久久久久久久 | 操操操av | 高清视频一区二区 | 国产三级一区 | 99热综合 | 亚洲无av在线中文字幕 | 日韩av手机在线 | 日韩精品一区二区视频 | 中文字幕偷拍 | 91看片在线 | 黄色一级生活片 | 中文字幕久久久久 | 国产在线日韩 | 日本精品视频 | 激情做爰呻吟视频舌吻 | 欧美又大又硬又粗bbbbb | 成人在线免费视频观看 | 久久人人爱 | 一区二区在线看 | 超碰av在线播放 | 中国1级毛片| 国产乱码一区二区 | 久久国产一区二区 |