中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站收錄量低怎么做常德網(wǎng)站設(shè)計

網(wǎng)站收錄量低怎么做,常德網(wǎng)站設(shè)計,網(wǎng)站建設(shè)自己怎么做,揚(yáng)中新聞網(wǎng)揚(yáng)中新聞前言 std::visit 是 C17 中引入的一個模板函數(shù),它用于對給定的 variant、union 類型或任何其他兼容的類型執(zhí)行一個訪問者操作。這個函數(shù)為多種可能類型的值提供了一種統(tǒng)一的訪問機(jī)制。使用 std::visit,你可以編寫更通用和靈活的代碼,而無需關(guān)…

前言

std::visit?是 C++17 中引入的一個模板函數(shù),它用于對給定的?variantunion?類型或任何其他兼容的類型執(zhí)行一個訪問者操作。這個函數(shù)為多種可能類型的值提供了一種統(tǒng)一的訪問機(jī)制。使用?std::visit,你可以編寫更通用和靈活的代碼,而無需關(guān)心具體是哪種類型的值。

實踐

?市面上大部分例子都是只訪問一個variant, 我們寫個不同的,實際visit支持一下放入多個variant, 參考語法:

?

#include <iostream>
#include <variant>
#include <string>
using namespace std;// Define alternative types
using Variant1 = std::variant<int, double>;
using Variant2 = std::variant<int,char>;struct MyVisitor {//對每一種組合都必須定義一個處理函數(shù)。少一個編譯都會失敗。void operator()(int value1, int value2) const {std::cout << value1<<value2<<endl;}void operator()(int value1, char value2) const {std::cout << value1<<value2<<endl;}void operator()(double value1, int value2) const {std::cout << value1<<value2<<endl;}void operator()(double value1, char value2) const {std::cout <<value1<<value2<<endl;}
};int main() {Variant1 var1;Variant2 var2;var1 = 42;var2 = 100;std::visit(MyVisitor{}, var1, var2); var1 = 3.14;var2 = 'a';std::visit(MyVisitor{}, var1, var2);return 0;
}

啰嗦一句,因為我們四個函數(shù)體相似,正是用模板的好時機(jī),把它們改成一句話:

    void operator()(auto&& value1, auto&& value2) const {std::cout << value1<<value2<<endl;  }

如果不放心,丟到cppinsights里看看展開:

四個函數(shù)不論手寫還是自動生成缺一不可,它們其實是兩個variant的alternative types的組合,即int/double 與 int/char的所有組合。缺一不可和gcc的實現(xiàn)有關(guān),下面會說到。

visit的原理

這次我們不看晦澀的代碼,而是通過GDB快速理解visit的原理。

調(diào)試到21行?std::visit(MyVisitor{}, var1, var2);

s進(jìn)入,慢慢到下面這個位置:

?打印__vtable: 它生成了一個2*2的二維數(shù)組,里面放了函數(shù)指針,對應(yīng)所有組合。

不要被名字所誤解,vtable不是virtual table的意思。

此時var1 var2里面裝的都是int,都是各自類型列表中的第一個類型?(var1.index(), var2.index()), __func_ptr應(yīng)該取得了__vtable[0][0]的值即0x40160f

?確實如此。

咱們這是從現(xiàn)象推原理,如果還想了解vtable怎么生成的,可能這篇文章對你有幫助:

Variant Visitation – Michael Park

Variant Visitation V2 – Michael Park

http://www.risenshineclean.com/news/8540.html

相關(guān)文章:

  • 中國企業(yè)500強(qiáng)江陰有幾家寧波seo外包公司
  • 做非法集資資訊的網(wǎng)站世界杯積分榜排名
  • 企業(yè)做網(wǎng)站維護(hù)價格專業(yè)seo優(yōu)化公司
  • 網(wǎng)站制作接單市場調(diào)研報告范文2000
  • 如何做獨(dú)立站個人網(wǎng)站推廣怎么做
  • 網(wǎng)站開發(fā)湛江西安搜索引擎優(yōu)化
  • 網(wǎng)站部分頻道完全不收錄了怎么做百度指數(shù)查詢移動版
  • 全球50個大網(wǎng)站開發(fā)語言昆明抖音推廣
  • 珠海市住房建設(shè)局網(wǎng)站十大外貿(mào)平臺
  • 如何自學(xué)網(wǎng)站制作網(wǎng)絡(luò)宣傳怎么做
  • 高端外貿(mào)網(wǎng)站建設(shè)服裝百度pc端首頁
  • 南京網(wǎng)站設(shè)計網(wǎng)站北京搜索引擎關(guān)鍵詞優(yōu)化
  • 網(wǎng)站設(shè)計需要什么專業(yè)關(guān)鍵詞優(yōu)化外包服務(wù)
  • 如何做盆栽蔬菜網(wǎng)站百度知道官網(wǎng)登錄入口
  • 專門做生鮮的網(wǎng)站打開百度搜索網(wǎng)站
  • 網(wǎng)上做任務(wù)賺錢的比較正規(guī)的網(wǎng)站seo顧問服務(wù) 樂云踐新專家
  • wordpress怎么看展現(xiàn)量北京百度推廣優(yōu)化排名
  • 什么網(wǎng)站做電器出租做網(wǎng)站建網(wǎng)站公司
  • 機(jī)關(guān)網(wǎng)站建設(shè)征求意見最新最好的磁力搜索
  • 大學(xué)生創(chuàng)業(yè)做網(wǎng)站網(wǎng)站流量統(tǒng)計分析
  • 公司網(wǎng)站的seo怎么做軟文推廣廣告
  • 汽車網(wǎng)站建設(shè)模板百度引流推廣哪家好
  • 紅谷灘園林建設(shè)集團(tuán)有限公司 網(wǎng)站百度文庫首頁
  • 湖南網(wǎng)站托管哪家好廣州網(wǎng)站優(yōu)化步驟
  • 清遠(yuǎn)專業(yè)網(wǎng)站制作公司360優(yōu)化大師官方下載最新版
  • 如何登錄網(wǎng)站空間sns營銷
  • 移動網(wǎng)站開發(fā)百度百科seo網(wǎng)絡(luò)優(yōu)化
  • 山東高端網(wǎng)站建設(shè)nba排名西部和東部
  • 網(wǎng)站開發(fā)的經(jīng)驗怎么提高百度關(guān)鍵詞排名
  • 人才網(wǎng)站建設(shè)臨沂網(wǎng)站建設(shè)方案服務(wù)