[{"data":1,"prerenderedAt":3516},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant":3095,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant":3500,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant":3515},{"id":4,"title":5,"body":6,"canonicalPath":3077,"chapterDepth":62,"chapterOrder":3078,"date":3079,"description":55,"docI18nKey":3080,"docKey":3081,"docRoot":3082,"docTitle":3083,"extension":3084,"i18nKey":3085,"isBlogPost":3086,"isWikiDoc":117,"isWikiIndex":3086,"layout":3087,"legacyPath":3087,"locale":3088,"localeSlug":3089,"meta":3090,"navigation":117,"path":3077,"seo":3091,"sourcePath":3092,"sourceStem":3085,"stem":3093,"wikiDepth":62,"__hash__":3094},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant.md","std::variant",{"type":7,"value":8,"toc":3055},"minimark",[9,14,23,28,32,38,42,45,49,71,75,335,339,434,438,443,759,766,774,778,1205,1209,1215,1219,1618,1622,1628,1632,2053,2057,2063,2067,2070,2074,2077,2080,2185,2189,2194,2251,2255,2747,2751,2757,2766,2770,2775,2826,2837,2840,2867,2870,2875,2949,2955,2958,2977,2980,3024,3028,3051],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17,18,22],"p",{},"Sometimes a variable needs to store a value that could be an int, a string, or a double. The traditional approach is ",[19,20,21],"code",{},"union"," (in C), but it's not type-safe — you don't know which type is currently stored, and if you access it incorrectly, it crashes.",[15,24,25,27],{},[19,26,5],{}," is a type-safe union that can store one of multiple types and knows which type it currently holds.",[10,29,31],{"id":30},"what-is-this-feature","What is this feature?",[15,33,34,37],{},[19,35,36],{},"std::variant\u003CT1, T2, ...>"," is a type-safe union introduced in C++17. At any given time, it stores a value of only one of its contained types. When you access it, the compiler performs checks to ensure you don't accidentally retrieve a value of the wrong type.",[10,39,41],{"id":40},"c-standard-version","C++ standard version",[15,43,44],{},"C++17",[10,46,48],{"id":47},"required-header-files","Required header files",[50,51,56],"pre",{"className":52,"code":53,"language":54,"meta":55,"style":55},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cvariant>\n","cpp","",[19,57,58],{"__ignoreMap":55},[59,60,63,67],"span",{"class":61,"line":62},"line",1,[59,64,66],{"class":65},"szBVR","#include",[59,68,70],{"class":69},"sZZnC"," \u003Cvariant>\n",[10,72,74],{"id":73},"basic-syntax","Basic Syntax",[50,76,78],{"className":52,"code":77,"language":54,"meta":55,"style":55},"std::variant\u003Cint, double, std::string> v;\n\nv = 42;                      \u002F\u002F 存 int\nv = 3.14;                    \u002F\u002F 存 double\nv = std::string(\"hello\");   \u002F\u002F 存 string\n\n\u002F\u002F 访问方式 1：std::get\u003CT>(v) —— 类型不对抛异常\nint n = std::get\u003Cint>(v);\n\n\u002F\u002F 访问方式 2：std::get_if\u003CT>(&v) —— 类型不对返回 nullptr\nif (auto* p = std::get_if\u003Cint>(&v)) { ... }\n\n\u002F\u002F 访问方式 3：std::visit —— 用 visitor 模式处理所有可能的类型\nstd::visit([](auto&& val) { ... }, v);\n\n\u002F\u002F 查询当前存储的类型的索引\nsize_t idx = v.index();  \u002F\u002F 0-based\n",[19,79,80,112,119,139,154,182,187,193,219,224,230,267,272,278,301,306,312],{"__ignoreMap":55},[59,81,82,86,90,93,96,99,101,103,106,109],{"class":61,"line":62},[59,83,85],{"class":84},"sScJk","std",[59,87,89],{"class":88},"sVt8B","::variant",[59,91,92],{"class":65},"\u003Cint",[59,94,95],{"class":88},", ",[59,97,98],{"class":65},"double",[59,100,95],{"class":88},[59,102,85],{"class":84},[59,104,105],{"class":88},"::string",[59,107,108],{"class":65},">",[59,110,111],{"class":88}," v;\n",[59,113,115],{"class":61,"line":114},2,[59,116,118],{"emptyLinePlaceholder":117},true,"\n",[59,120,122,125,128,132,135],{"class":61,"line":121},3,[59,123,124],{"class":88},"v ",[59,126,127],{"class":65},"=",[59,129,131],{"class":130},"sj4cs"," 42",[59,133,134],{"class":88},";",[59,136,138],{"class":137},"sJ8bj","                      \u002F\u002F 存 int\n",[59,140,142,144,146,149,151],{"class":61,"line":141},4,[59,143,124],{"class":88},[59,145,127],{"class":65},[59,147,148],{"class":130}," 3.14",[59,150,134],{"class":88},[59,152,153],{"class":137},"                    \u002F\u002F 存 double\n",[59,155,157,159,161,164,167,170,173,176,179],{"class":61,"line":156},5,[59,158,124],{"class":88},[59,160,127],{"class":65},[59,162,163],{"class":84}," std",[59,165,166],{"class":88},"::",[59,168,169],{"class":84},"string",[59,171,172],{"class":88},"(",[59,174,175],{"class":69},"\"hello\"",[59,177,178],{"class":88},");",[59,180,181],{"class":137},"   \u002F\u002F 存 string\n",[59,183,185],{"class":61,"line":184},6,[59,186,118],{"emptyLinePlaceholder":117},[59,188,190],{"class":61,"line":189},7,[59,191,192],{"class":137},"\u002F\u002F 访问方式 1：std::get\u003CT>(v) —— 类型不对抛异常\n",[59,194,196,199,202,204,206,208,211,214,216],{"class":61,"line":195},8,[59,197,198],{"class":65},"int",[59,200,201],{"class":88}," n ",[59,203,127],{"class":65},[59,205,163],{"class":84},[59,207,166],{"class":88},[59,209,210],{"class":84},"get",[59,212,213],{"class":88},"\u003C",[59,215,198],{"class":65},[59,217,218],{"class":88},">(v);\n",[59,220,222],{"class":61,"line":221},9,[59,223,118],{"emptyLinePlaceholder":117},[59,225,227],{"class":61,"line":226},10,[59,228,229],{"class":137},"\u002F\u002F 访问方式 2：std::get_if\u003CT>(&v) —— 类型不对返回 nullptr\n",[59,231,233,236,239,242,245,247,249,251,254,256,258,261,264],{"class":61,"line":232},11,[59,234,235],{"class":65},"if",[59,237,238],{"class":88}," (",[59,240,241],{"class":65},"auto*",[59,243,244],{"class":88}," p ",[59,246,127],{"class":65},[59,248,163],{"class":84},[59,250,166],{"class":88},[59,252,253],{"class":84},"get_if",[59,255,213],{"class":88},[59,257,198],{"class":65},[59,259,260],{"class":88},">(",[59,262,263],{"class":65},"&",[59,265,266],{"class":88},"v)) { ... }\n",[59,268,270],{"class":61,"line":269},12,[59,271,118],{"emptyLinePlaceholder":117},[59,273,275],{"class":61,"line":274},13,[59,276,277],{"class":137},"\u002F\u002F 访问方式 3：std::visit —— 用 visitor 模式处理所有可能的类型\n",[59,279,281,283,285,288,291,294,298],{"class":61,"line":280},14,[59,282,85],{"class":84},[59,284,166],{"class":88},[59,286,287],{"class":84},"visit",[59,289,290],{"class":88},"([](",[59,292,293],{"class":65},"auto&&",[59,295,297],{"class":296},"s4XuR"," val",[59,299,300],{"class":88},") { ... }, v);\n",[59,302,304],{"class":61,"line":303},15,[59,305,118],{"emptyLinePlaceholder":117},[59,307,309],{"class":61,"line":308},16,[59,310,311],{"class":137},"\u002F\u002F 查询当前存储的类型的索引\n",[59,313,315,318,321,323,326,329,332],{"class":61,"line":314},17,[59,316,317],{"class":65},"size_t",[59,319,320],{"class":88}," idx ",[59,322,127],{"class":65},[59,324,325],{"class":88}," v.",[59,327,328],{"class":84},"index",[59,330,331],{"class":88},"();",[59,333,334],{"class":137},"  \u002F\u002F 0-based\n",[10,336,338],{"id":337},"common-usage","Common Usage",[340,341,342,356],"table",{},[343,344,345],"thead",{},[346,347,348,353],"tr",{},[349,350,352],"th",{"align":351},"left","Operation",[349,354,355],{"align":351},"Explanation",[357,358,359,370,380,394,404,414,424],"tbody",{},[346,360,361,367],{},[362,363,364],"td",{"align":351},[19,365,366],{},"v = value;",[362,368,369],{"align":351},"Assignment (Automatic Type Switching)",[346,371,372,377],{},[362,373,374],{"align":351},[19,375,376],{},"v.emplace\u003CT>(args...)",[362,378,379],{"align":351},"In-place construction",[346,381,382,387],{},[362,383,384],{"align":351},[19,385,386],{},"std::get\u003CT>(v)",[362,388,389,390,393],{"align":351},"Get value (throws ",[19,391,392],{},"std::bad_variant_access"," if the type is incorrect)",[346,395,396,401],{},[362,397,398],{"align":351},[19,399,400],{},"std::get_if\u003CT>(&v)",[362,402,403],{"align":351},"Safe retrieval (returns nullptr if type does not match)",[346,405,406,411],{},[362,407,408],{"align":351},[19,409,410],{},"v.index()",[362,412,413],{"align":351},"Return the current type index (0-based)",[346,415,416,421],{},[362,417,418],{"align":351},[19,419,420],{},"std::visit(visitor, v)",[362,422,423],{"align":351},"Use the visitor pattern to handle",[346,425,426,431],{},[362,427,428],{"align":351},[19,429,430],{},"std::holds_alternative\u003CT>(v)",[362,432,433],{"align":351},"Check if holding type T",[10,435,437],{"id":436},"example-code","Example code",[439,440,442],"h3",{"id":441},"example-1-variant-basic-usagestoring-different-types-of-values","Example 1: variant basic usage—storing different types of values",[50,444,446],{"className":52,"code":445,"language":54,"meta":55,"style":55},"#include \u003Ciostream>\n#include \u003Cvariant>\n#include \u003Cstring>\n#include \u003Ctype_traits>\n\nint main()\n{\n    \u002F\u002F v 可以存 int、double 或 string\n    std::variant\u003Cint, double, std::string> v;\n\n    v = 42;\n    std::cout \u003C\u003C \"int: \" \u003C\u003C std::get\u003Cint>(v) \u003C\u003C \"\\n\";\n\n    v = 3.14;\n    std::cout \u003C\u003C \"double: \" \u003C\u003C std::get\u003Cdouble>(v) \u003C\u003C \"\\n\";\n\n    v = std::string(\"hello\");\n    std::cout \u003C\u003C \"string: \" \u003C\u003C std::get\u003Cstd::string>(v) \u003C\u003C \"\\n\";\n\n    \u002F\u002F 查看当前类型索引\n    std::cout \u003C\u003C \"current index: \" \u003C\u003C v.index() \u003C\u003C \"\\n\";  \u002F\u002F 2 (string)\n\n    return 0;\n}\n",[19,447,448,455,461,468,475,479,489,494,499,522,526,538,580,584,594,629,633,652,692,697,703,737,742,753],{"__ignoreMap":55},[59,449,450,452],{"class":61,"line":62},[59,451,66],{"class":65},[59,453,454],{"class":69}," \u003Ciostream>\n",[59,456,457,459],{"class":61,"line":114},[59,458,66],{"class":65},[59,460,70],{"class":69},[59,462,463,465],{"class":61,"line":121},[59,464,66],{"class":65},[59,466,467],{"class":69}," \u003Cstring>\n",[59,469,470,472],{"class":61,"line":141},[59,471,66],{"class":65},[59,473,474],{"class":69}," \u003Ctype_traits>\n",[59,476,477],{"class":61,"line":156},[59,478,118],{"emptyLinePlaceholder":117},[59,480,481,483,486],{"class":61,"line":184},[59,482,198],{"class":65},[59,484,485],{"class":84}," main",[59,487,488],{"class":88},"()\n",[59,490,491],{"class":61,"line":189},[59,492,493],{"class":88},"{\n",[59,495,496],{"class":61,"line":195},[59,497,498],{"class":137},"    \u002F\u002F v 可以存 int、double 或 string\n",[59,500,501,504,506,508,510,512,514,516,518,520],{"class":61,"line":221},[59,502,503],{"class":84},"    std",[59,505,89],{"class":88},[59,507,92],{"class":65},[59,509,95],{"class":88},[59,511,98],{"class":65},[59,513,95],{"class":88},[59,515,85],{"class":84},[59,517,105],{"class":88},[59,519,108],{"class":65},[59,521,111],{"class":88},[59,523,524],{"class":61,"line":226},[59,525,118],{"emptyLinePlaceholder":117},[59,527,528,531,533,535],{"class":61,"line":232},[59,529,530],{"class":88},"    v ",[59,532,127],{"class":65},[59,534,131],{"class":130},[59,536,537],{"class":88},";\n",[59,539,540,542,545,548,551,554,556,558,560,562,564,567,569,572,575,578],{"class":61,"line":269},[59,541,503],{"class":84},[59,543,544],{"class":88},"::cout ",[59,546,547],{"class":65},"\u003C\u003C",[59,549,550],{"class":69}," \"int: \"",[59,552,553],{"class":65}," \u003C\u003C",[59,555,163],{"class":84},[59,557,166],{"class":88},[59,559,210],{"class":84},[59,561,213],{"class":88},[59,563,198],{"class":65},[59,565,566],{"class":88},">(v) ",[59,568,547],{"class":65},[59,570,571],{"class":69}," \"",[59,573,574],{"class":130},"\\n",[59,576,577],{"class":69},"\"",[59,579,537],{"class":88},[59,581,582],{"class":61,"line":274},[59,583,118],{"emptyLinePlaceholder":117},[59,585,586,588,590,592],{"class":61,"line":280},[59,587,530],{"class":88},[59,589,127],{"class":65},[59,591,148],{"class":130},[59,593,537],{"class":88},[59,595,596,598,600,602,605,607,609,611,613,615,617,619,621,623,625,627],{"class":61,"line":303},[59,597,503],{"class":84},[59,599,544],{"class":88},[59,601,547],{"class":65},[59,603,604],{"class":69}," \"double: \"",[59,606,553],{"class":65},[59,608,163],{"class":84},[59,610,166],{"class":88},[59,612,210],{"class":84},[59,614,213],{"class":88},[59,616,98],{"class":65},[59,618,566],{"class":88},[59,620,547],{"class":65},[59,622,571],{"class":69},[59,624,574],{"class":130},[59,626,577],{"class":69},[59,628,537],{"class":88},[59,630,631],{"class":61,"line":308},[59,632,118],{"emptyLinePlaceholder":117},[59,634,635,637,639,641,643,645,647,649],{"class":61,"line":314},[59,636,530],{"class":88},[59,638,127],{"class":65},[59,640,163],{"class":84},[59,642,166],{"class":88},[59,644,169],{"class":84},[59,646,172],{"class":88},[59,648,175],{"class":69},[59,650,651],{"class":88},");\n",[59,653,655,657,659,661,664,666,668,670,672,674,676,678,680,682,684,686,688,690],{"class":61,"line":654},18,[59,656,503],{"class":84},[59,658,544],{"class":88},[59,660,547],{"class":65},[59,662,663],{"class":69}," \"string: \"",[59,665,553],{"class":65},[59,667,163],{"class":84},[59,669,166],{"class":88},[59,671,210],{"class":84},[59,673,213],{"class":88},[59,675,85],{"class":84},[59,677,166],{"class":88},[59,679,169],{"class":84},[59,681,566],{"class":88},[59,683,547],{"class":65},[59,685,571],{"class":69},[59,687,574],{"class":130},[59,689,577],{"class":69},[59,691,537],{"class":88},[59,693,695],{"class":61,"line":694},19,[59,696,118],{"emptyLinePlaceholder":117},[59,698,700],{"class":61,"line":699},20,[59,701,702],{"class":137},"    \u002F\u002F 查看当前类型索引\n",[59,704,706,708,710,712,715,717,719,721,724,726,728,730,732,734],{"class":61,"line":705},21,[59,707,503],{"class":84},[59,709,544],{"class":88},[59,711,547],{"class":65},[59,713,714],{"class":69}," \"current index: \"",[59,716,553],{"class":65},[59,718,325],{"class":88},[59,720,328],{"class":84},[59,722,723],{"class":88},"() ",[59,725,547],{"class":65},[59,727,571],{"class":69},[59,729,574],{"class":130},[59,731,577],{"class":69},[59,733,134],{"class":88},[59,735,736],{"class":137},"  \u002F\u002F 2 (string)\n",[59,738,740],{"class":61,"line":739},22,[59,741,118],{"emptyLinePlaceholder":117},[59,743,745,748,751],{"class":61,"line":744},23,[59,746,747],{"class":65},"    return",[59,749,750],{"class":130}," 0",[59,752,537],{"class":88},[59,754,756],{"class":61,"line":755},24,[59,757,758],{"class":88},"}\n",[15,760,761,765],{},[762,763,764],"strong",{},"Results","：",[50,767,772],{"className":768,"code":770,"language":771},[769],"language-text","int: 42\ndouble: 3.14\nstring: hello\ncurrent index: 2\n","text",[19,773,770],{"__ignoreMap":55},[439,775,777],{"id":776},"example-2-building-on-example-1-using-get_if-for-safe-access","Example 2: Building on Example 1, using get_if for safe access",[50,779,781],{"className":52,"code":780,"language":54,"meta":55,"style":55},"#include \u003Ciostream>\n#include \u003Cvariant>\n#include \u003Cstring>\n\nvoid print_value(const std::variant\u003Cint, double, std::string>& v)\n{\n    \u002F\u002F 安全方式：逐个尝试，get_if 返回指针\n    if (auto* p = std::get_if\u003Cint>(&v))\n    {\n        std::cout \u003C\u003C \"int: \" \u003C\u003C *p \u003C\u003C \"\\n\";\n    }\n    else if (auto* p = std::get_if\u003Cdouble>(&v))\n    {\n        std::cout \u003C\u003C \"double: \" \u003C\u003C *p \u003C\u003C \"\\n\";\n    }\n    else if (auto* p = std::get_if\u003Cstd::string>(&v))\n    {\n        std::cout \u003C\u003C \"string: \" \u003C\u003C *p \u003C\u003C \"\\n\";\n    }\n}\n\nint main()\n{\n    std::variant\u003Cint, double, std::string> v;\n\n    v = 42;\n    print_value(v);\n\n    v = 3.14159;\n    print_value(v);\n\n    v = std::string(\"C++17\");\n    print_value(v);\n\n    return 0;\n}\n",[19,782,783,789,795,801,805,851,855,860,890,895,924,929,961,965,991,995,1029,1033,1059,1063,1067,1071,1079,1083,1105,1110,1121,1130,1135,1147,1154,1159,1179,1186,1191,1200],{"__ignoreMap":55},[59,784,785,787],{"class":61,"line":62},[59,786,66],{"class":65},[59,788,454],{"class":69},[59,790,791,793],{"class":61,"line":114},[59,792,66],{"class":65},[59,794,70],{"class":69},[59,796,797,799],{"class":61,"line":121},[59,798,66],{"class":65},[59,800,467],{"class":69},[59,802,803],{"class":61,"line":141},[59,804,118],{"emptyLinePlaceholder":117},[59,806,807,810,813,815,818,820,822,825,827,829,831,833,835,837,839,841,843,845,848],{"class":61,"line":156},[59,808,809],{"class":65},"void",[59,811,812],{"class":84}," print_value",[59,814,172],{"class":88},[59,816,817],{"class":65},"const",[59,819,163],{"class":84},[59,821,166],{"class":88},[59,823,824],{"class":84},"variant",[59,826,213],{"class":88},[59,828,198],{"class":65},[59,830,95],{"class":88},[59,832,98],{"class":65},[59,834,95],{"class":88},[59,836,85],{"class":84},[59,838,166],{"class":88},[59,840,169],{"class":84},[59,842,108],{"class":88},[59,844,263],{"class":65},[59,846,847],{"class":296}," v",[59,849,850],{"class":88},")\n",[59,852,853],{"class":61,"line":184},[59,854,493],{"class":88},[59,856,857],{"class":61,"line":189},[59,858,859],{"class":137},"    \u002F\u002F 安全方式：逐个尝试，get_if 返回指针\n",[59,861,862,865,867,869,871,873,875,877,879,881,883,885,887],{"class":61,"line":195},[59,863,864],{"class":65},"    if",[59,866,238],{"class":88},[59,868,241],{"class":65},[59,870,244],{"class":88},[59,872,127],{"class":65},[59,874,163],{"class":84},[59,876,166],{"class":88},[59,878,253],{"class":84},[59,880,213],{"class":88},[59,882,198],{"class":65},[59,884,260],{"class":88},[59,886,263],{"class":65},[59,888,889],{"class":88},"v))\n",[59,891,892],{"class":61,"line":221},[59,893,894],{"class":88},"    {\n",[59,896,897,900,902,904,906,908,911,914,916,918,920,922],{"class":61,"line":226},[59,898,899],{"class":84},"        std",[59,901,544],{"class":88},[59,903,547],{"class":65},[59,905,550],{"class":69},[59,907,553],{"class":65},[59,909,910],{"class":65}," *",[59,912,913],{"class":88},"p ",[59,915,547],{"class":65},[59,917,571],{"class":69},[59,919,574],{"class":130},[59,921,577],{"class":69},[59,923,537],{"class":88},[59,925,926],{"class":61,"line":232},[59,927,928],{"class":88},"    }\n",[59,930,931,934,937,939,941,943,945,947,949,951,953,955,957,959],{"class":61,"line":269},[59,932,933],{"class":65},"    else",[59,935,936],{"class":65}," if",[59,938,238],{"class":88},[59,940,241],{"class":65},[59,942,244],{"class":88},[59,944,127],{"class":65},[59,946,163],{"class":84},[59,948,166],{"class":88},[59,950,253],{"class":84},[59,952,213],{"class":88},[59,954,98],{"class":65},[59,956,260],{"class":88},[59,958,263],{"class":65},[59,960,889],{"class":88},[59,962,963],{"class":61,"line":274},[59,964,894],{"class":88},[59,966,967,969,971,973,975,977,979,981,983,985,987,989],{"class":61,"line":280},[59,968,899],{"class":84},[59,970,544],{"class":88},[59,972,547],{"class":65},[59,974,604],{"class":69},[59,976,553],{"class":65},[59,978,910],{"class":65},[59,980,913],{"class":88},[59,982,547],{"class":65},[59,984,571],{"class":69},[59,986,574],{"class":130},[59,988,577],{"class":69},[59,990,537],{"class":88},[59,992,993],{"class":61,"line":303},[59,994,928],{"class":88},[59,996,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027],{"class":61,"line":308},[59,998,933],{"class":65},[59,1000,936],{"class":65},[59,1002,238],{"class":88},[59,1004,241],{"class":65},[59,1006,244],{"class":88},[59,1008,127],{"class":65},[59,1010,163],{"class":84},[59,1012,166],{"class":88},[59,1014,253],{"class":84},[59,1016,213],{"class":88},[59,1018,85],{"class":84},[59,1020,166],{"class":88},[59,1022,169],{"class":84},[59,1024,260],{"class":88},[59,1026,263],{"class":65},[59,1028,889],{"class":88},[59,1030,1031],{"class":61,"line":314},[59,1032,894],{"class":88},[59,1034,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057],{"class":61,"line":654},[59,1036,899],{"class":84},[59,1038,544],{"class":88},[59,1040,547],{"class":65},[59,1042,663],{"class":69},[59,1044,553],{"class":65},[59,1046,910],{"class":65},[59,1048,913],{"class":88},[59,1050,547],{"class":65},[59,1052,571],{"class":69},[59,1054,574],{"class":130},[59,1056,577],{"class":69},[59,1058,537],{"class":88},[59,1060,1061],{"class":61,"line":694},[59,1062,928],{"class":88},[59,1064,1065],{"class":61,"line":699},[59,1066,758],{"class":88},[59,1068,1069],{"class":61,"line":705},[59,1070,118],{"emptyLinePlaceholder":117},[59,1072,1073,1075,1077],{"class":61,"line":739},[59,1074,198],{"class":65},[59,1076,485],{"class":84},[59,1078,488],{"class":88},[59,1080,1081],{"class":61,"line":744},[59,1082,493],{"class":88},[59,1084,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103],{"class":61,"line":755},[59,1086,503],{"class":84},[59,1088,89],{"class":88},[59,1090,92],{"class":65},[59,1092,95],{"class":88},[59,1094,98],{"class":65},[59,1096,95],{"class":88},[59,1098,85],{"class":84},[59,1100,105],{"class":88},[59,1102,108],{"class":65},[59,1104,111],{"class":88},[59,1106,1108],{"class":61,"line":1107},25,[59,1109,118],{"emptyLinePlaceholder":117},[59,1111,1113,1115,1117,1119],{"class":61,"line":1112},26,[59,1114,530],{"class":88},[59,1116,127],{"class":65},[59,1118,131],{"class":130},[59,1120,537],{"class":88},[59,1122,1124,1127],{"class":61,"line":1123},27,[59,1125,1126],{"class":84},"    print_value",[59,1128,1129],{"class":88},"(v);\n",[59,1131,1133],{"class":61,"line":1132},28,[59,1134,118],{"emptyLinePlaceholder":117},[59,1136,1138,1140,1142,1145],{"class":61,"line":1137},29,[59,1139,530],{"class":88},[59,1141,127],{"class":65},[59,1143,1144],{"class":130}," 3.14159",[59,1146,537],{"class":88},[59,1148,1150,1152],{"class":61,"line":1149},30,[59,1151,1126],{"class":84},[59,1153,1129],{"class":88},[59,1155,1157],{"class":61,"line":1156},31,[59,1158,118],{"emptyLinePlaceholder":117},[59,1160,1162,1164,1166,1168,1170,1172,1174,1177],{"class":61,"line":1161},32,[59,1163,530],{"class":88},[59,1165,127],{"class":65},[59,1167,163],{"class":84},[59,1169,166],{"class":88},[59,1171,169],{"class":84},[59,1173,172],{"class":88},[59,1175,1176],{"class":69},"\"C++17\"",[59,1178,651],{"class":88},[59,1180,1182,1184],{"class":61,"line":1181},33,[59,1183,1126],{"class":84},[59,1185,1129],{"class":88},[59,1187,1189],{"class":61,"line":1188},34,[59,1190,118],{"emptyLinePlaceholder":117},[59,1192,1194,1196,1198],{"class":61,"line":1193},35,[59,1195,747],{"class":65},[59,1197,750],{"class":130},[59,1199,537],{"class":88},[59,1201,1203],{"class":61,"line":1202},36,[59,1204,758],{"class":88},[15,1206,1207,765],{},[762,1208,764],{},[50,1210,1213],{"className":1211,"code":1212,"language":771},[769],"int: 42\ndouble: 3.14159\nstring: C++17\n",[19,1214,1212],{"__ignoreMap":55},[439,1216,1218],{"id":1217},"example-3building-on-example-2-use-stdvisit-to-handle-all-types","Example 3：Building on Example 2, use std::visit to handle all types",[50,1220,1222],{"className":52,"code":1221,"language":54,"meta":55,"style":55},"#include \u003Ciostream>\n#include \u003Cvariant>\n#include \u003Cstring>\n\nint main()\n{\n    std::variant\u003Cint, double, std::string> v;\n\n    \u002F\u002F std::visit 配合泛型 lambda 优雅处理所有类型\n    auto printer = [](const auto& val) {\n        std::cout \u003C\u003C \"value: \" \u003C\u003C val \u003C\u003C \"\\n\";\n    };\n\n    v = 42;\n    std::visit(printer, v);\n\n    v = 2.718;\n    std::visit(printer, v);\n\n    v = std::string(\"hello variant\");\n    std::visit(printer, v);\n\n    \u002F\u002F 也可以返回不同类型的值\n    auto to_double = [](const auto& val) -> double {\n        if constexpr (std::is_same_v\u003Cstd::decay_t\u003Cdecltype(val)>, std::string>)\n        {\n            return 0.0;  \u002F\u002F string 不能转 double\n        }\n        else\n        {\n            return static_cast\u003Cdouble>(val);\n        }\n    };\n\n    v = 10;\n    std::cout \u003C\u003C \"to_double: \" \u003C\u003C std::visit(to_double, v) \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[19,1223,1224,1230,1236,1242,1246,1254,1258,1280,1284,1289,1312,1338,1343,1347,1357,1368,1372,1383,1393,1397,1416,1426,1430,1435,1460,1502,1507,1520,1525,1530,1534,1544,1548,1552,1556,1567,1599,1604,1613],{"__ignoreMap":55},[59,1225,1226,1228],{"class":61,"line":62},[59,1227,66],{"class":65},[59,1229,454],{"class":69},[59,1231,1232,1234],{"class":61,"line":114},[59,1233,66],{"class":65},[59,1235,70],{"class":69},[59,1237,1238,1240],{"class":61,"line":121},[59,1239,66],{"class":65},[59,1241,467],{"class":69},[59,1243,1244],{"class":61,"line":141},[59,1245,118],{"emptyLinePlaceholder":117},[59,1247,1248,1250,1252],{"class":61,"line":156},[59,1249,198],{"class":65},[59,1251,485],{"class":84},[59,1253,488],{"class":88},[59,1255,1256],{"class":61,"line":184},[59,1257,493],{"class":88},[59,1259,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278],{"class":61,"line":189},[59,1261,503],{"class":84},[59,1263,89],{"class":88},[59,1265,92],{"class":65},[59,1267,95],{"class":88},[59,1269,98],{"class":65},[59,1271,95],{"class":88},[59,1273,85],{"class":84},[59,1275,105],{"class":88},[59,1277,108],{"class":65},[59,1279,111],{"class":88},[59,1281,1282],{"class":61,"line":195},[59,1283,118],{"emptyLinePlaceholder":117},[59,1285,1286],{"class":61,"line":221},[59,1287,1288],{"class":137},"    \u002F\u002F std::visit 配合泛型 lambda 优雅处理所有类型\n",[59,1290,1291,1294,1297,1299,1302,1304,1307,1309],{"class":61,"line":226},[59,1292,1293],{"class":65},"    auto",[59,1295,1296],{"class":88}," printer ",[59,1298,127],{"class":65},[59,1300,1301],{"class":88}," [](",[59,1303,817],{"class":65},[59,1305,1306],{"class":65}," auto&",[59,1308,297],{"class":296},[59,1310,1311],{"class":88},") {\n",[59,1313,1314,1316,1318,1320,1323,1325,1328,1330,1332,1334,1336],{"class":61,"line":232},[59,1315,899],{"class":84},[59,1317,544],{"class":88},[59,1319,547],{"class":65},[59,1321,1322],{"class":69}," \"value: \"",[59,1324,553],{"class":65},[59,1326,1327],{"class":88}," val ",[59,1329,547],{"class":65},[59,1331,571],{"class":69},[59,1333,574],{"class":130},[59,1335,577],{"class":69},[59,1337,537],{"class":88},[59,1339,1340],{"class":61,"line":269},[59,1341,1342],{"class":88},"    };\n",[59,1344,1345],{"class":61,"line":274},[59,1346,118],{"emptyLinePlaceholder":117},[59,1348,1349,1351,1353,1355],{"class":61,"line":280},[59,1350,530],{"class":88},[59,1352,127],{"class":65},[59,1354,131],{"class":130},[59,1356,537],{"class":88},[59,1358,1359,1361,1363,1365],{"class":61,"line":303},[59,1360,503],{"class":84},[59,1362,166],{"class":88},[59,1364,287],{"class":84},[59,1366,1367],{"class":88},"(printer, v);\n",[59,1369,1370],{"class":61,"line":308},[59,1371,118],{"emptyLinePlaceholder":117},[59,1373,1374,1376,1378,1381],{"class":61,"line":314},[59,1375,530],{"class":88},[59,1377,127],{"class":65},[59,1379,1380],{"class":130}," 2.718",[59,1382,537],{"class":88},[59,1384,1385,1387,1389,1391],{"class":61,"line":654},[59,1386,503],{"class":84},[59,1388,166],{"class":88},[59,1390,287],{"class":84},[59,1392,1367],{"class":88},[59,1394,1395],{"class":61,"line":694},[59,1396,118],{"emptyLinePlaceholder":117},[59,1398,1399,1401,1403,1405,1407,1409,1411,1414],{"class":61,"line":699},[59,1400,530],{"class":88},[59,1402,127],{"class":65},[59,1404,163],{"class":84},[59,1406,166],{"class":88},[59,1408,169],{"class":84},[59,1410,172],{"class":88},[59,1412,1413],{"class":69},"\"hello variant\"",[59,1415,651],{"class":88},[59,1417,1418,1420,1422,1424],{"class":61,"line":705},[59,1419,503],{"class":84},[59,1421,166],{"class":88},[59,1423,287],{"class":84},[59,1425,1367],{"class":88},[59,1427,1428],{"class":61,"line":739},[59,1429,118],{"emptyLinePlaceholder":117},[59,1431,1432],{"class":61,"line":744},[59,1433,1434],{"class":137},"    \u002F\u002F 也可以返回不同类型的值\n",[59,1436,1437,1439,1442,1444,1446,1448,1450,1452,1455,1457],{"class":61,"line":755},[59,1438,1293],{"class":65},[59,1440,1441],{"class":88}," to_double ",[59,1443,127],{"class":65},[59,1445,1301],{"class":88},[59,1447,817],{"class":65},[59,1449,1306],{"class":65},[59,1451,297],{"class":296},[59,1453,1454],{"class":88},") -> ",[59,1456,98],{"class":65},[59,1458,1459],{"class":88}," {\n",[59,1461,1462,1465,1468,1470,1472,1475,1477,1479,1481,1484,1487,1490,1492,1494,1496,1498,1500],{"class":61,"line":1107},[59,1463,1464],{"class":65},"        if",[59,1466,1467],{"class":65}," constexpr",[59,1469,238],{"class":88},[59,1471,85],{"class":84},[59,1473,1474],{"class":88},"::is_same_v",[59,1476,213],{"class":65},[59,1478,85],{"class":84},[59,1480,166],{"class":88},[59,1482,1483],{"class":130},"decay_t",[59,1485,1486],{"class":65},"\u003Cdecltype",[59,1488,1489],{"class":88},"(val)",[59,1491,108],{"class":65},[59,1493,95],{"class":88},[59,1495,85],{"class":84},[59,1497,105],{"class":88},[59,1499,108],{"class":65},[59,1501,850],{"class":88},[59,1503,1504],{"class":61,"line":1112},[59,1505,1506],{"class":88},"        {\n",[59,1508,1509,1512,1515,1517],{"class":61,"line":1123},[59,1510,1511],{"class":65},"            return",[59,1513,1514],{"class":130}," 0.0",[59,1516,134],{"class":88},[59,1518,1519],{"class":137},"  \u002F\u002F string 不能转 double\n",[59,1521,1522],{"class":61,"line":1132},[59,1523,1524],{"class":88},"        }\n",[59,1526,1527],{"class":61,"line":1137},[59,1528,1529],{"class":65},"        else\n",[59,1531,1532],{"class":61,"line":1149},[59,1533,1506],{"class":88},[59,1535,1536,1538,1541],{"class":61,"line":1156},[59,1537,1511],{"class":65},[59,1539,1540],{"class":65}," static_cast\u003Cdouble>",[59,1542,1543],{"class":88},"(val);\n",[59,1545,1546],{"class":61,"line":1161},[59,1547,1524],{"class":88},[59,1549,1550],{"class":61,"line":1181},[59,1551,1342],{"class":88},[59,1553,1554],{"class":61,"line":1188},[59,1555,118],{"emptyLinePlaceholder":117},[59,1557,1558,1560,1562,1565],{"class":61,"line":1193},[59,1559,530],{"class":88},[59,1561,127],{"class":65},[59,1563,1564],{"class":130}," 10",[59,1566,537],{"class":88},[59,1568,1569,1571,1573,1575,1578,1580,1582,1584,1586,1589,1591,1593,1595,1597],{"class":61,"line":1202},[59,1570,503],{"class":84},[59,1572,544],{"class":88},[59,1574,547],{"class":65},[59,1576,1577],{"class":69}," \"to_double: \"",[59,1579,553],{"class":65},[59,1581,163],{"class":84},[59,1583,166],{"class":88},[59,1585,287],{"class":84},[59,1587,1588],{"class":88},"(to_double, v) ",[59,1590,547],{"class":65},[59,1592,571],{"class":69},[59,1594,574],{"class":130},[59,1596,577],{"class":69},[59,1598,537],{"class":88},[59,1600,1602],{"class":61,"line":1601},37,[59,1603,118],{"emptyLinePlaceholder":117},[59,1605,1607,1609,1611],{"class":61,"line":1606},38,[59,1608,747],{"class":65},[59,1610,750],{"class":130},[59,1612,537],{"class":88},[59,1614,1616],{"class":61,"line":1615},39,[59,1617,758],{"class":88},[15,1619,1620,765],{},[762,1621,764],{},[50,1623,1626],{"className":1624,"code":1625,"language":771},[769],"value: 42\nvalue: 2.718\nvalue: hello variant\nto_double: 10\n",[19,1627,1625],{"__ignoreMap":55},[439,1629,1631],{"id":1630},"example-4-building-on-example-3-using-variant-to-represent-message-types","Example 4: Building on Example 3, using variant to represent message types",[50,1633,1635],{"className":52,"code":1634,"language":54,"meta":55,"style":55},"#include \u003Ciostream>\n#include \u003Cvariant>\n#include \u003Cstring>\n\n\u002F\u002F 定义消息类型\nstruct TextMessage { std::string text; };\nstruct NumberMessage { int number; };\nstruct QuitMessage {};\n\nusing Message = std::variant\u003CTextMessage, NumberMessage, QuitMessage>;\n\n\u002F\u002F 处理消息的 visitor\nstruct MessageHandler\n{\n    void operator()(const TextMessage& msg) const\n    {\n        std::cout \u003C\u003C \"Text: \" \u003C\u003C msg.text \u003C\u003C \"\\n\";\n    }\n    void operator()(const NumberMessage& msg) const\n    {\n        std::cout \u003C\u003C \"Number: \" \u003C\u003C msg.number \u003C\u003C \"\\n\";\n    }\n    void operator()(const QuitMessage&) const\n    {\n        std::cout \u003C\u003C \"Quit!\\n\";\n    }\n};\n\nint main()\n{\n    Message msg;\n\n    msg = TextMessage{\"Hello World\"};\n    std::visit(MessageHandler{}, msg);\n\n    msg = NumberMessage{42};\n    std::visit(MessageHandler{}, msg);\n\n    msg = QuitMessage{};\n    std::visit(MessageHandler{}, msg);\n\n    return 0;\n}\n",[19,1636,1637,1643,1649,1655,1659,1664,1680,1694,1704,1708,1743,1747,1752,1759,1763,1791,1795,1821,1825,1847,1851,1877,1881,1901,1905,1922,1926,1931,1935,1943,1947,1952,1956,1971,1982,1986,2000,2010,2014,2023,2034,2039,2048],{"__ignoreMap":55},[59,1638,1639,1641],{"class":61,"line":62},[59,1640,66],{"class":65},[59,1642,454],{"class":69},[59,1644,1645,1647],{"class":61,"line":114},[59,1646,66],{"class":65},[59,1648,70],{"class":69},[59,1650,1651,1653],{"class":61,"line":121},[59,1652,66],{"class":65},[59,1654,467],{"class":69},[59,1656,1657],{"class":61,"line":141},[59,1658,118],{"emptyLinePlaceholder":117},[59,1660,1661],{"class":61,"line":156},[59,1662,1663],{"class":137},"\u002F\u002F 定义消息类型\n",[59,1665,1666,1669,1672,1675,1677],{"class":61,"line":184},[59,1667,1668],{"class":65},"struct",[59,1670,1671],{"class":84}," TextMessage",[59,1673,1674],{"class":88}," { ",[59,1676,85],{"class":84},[59,1678,1679],{"class":88},"::string text; };\n",[59,1681,1682,1684,1687,1689,1691],{"class":61,"line":189},[59,1683,1668],{"class":65},[59,1685,1686],{"class":84}," NumberMessage",[59,1688,1674],{"class":88},[59,1690,198],{"class":65},[59,1692,1693],{"class":88}," number; };\n",[59,1695,1696,1698,1701],{"class":61,"line":195},[59,1697,1668],{"class":65},[59,1699,1700],{"class":84}," QuitMessage",[59,1702,1703],{"class":88}," {};\n",[59,1705,1706],{"class":61,"line":221},[59,1707,118],{"emptyLinePlaceholder":117},[59,1709,1710,1713,1716,1719,1721,1723,1725,1727,1730,1732,1735,1737,1740],{"class":61,"line":226},[59,1711,1712],{"class":65},"using",[59,1714,1715],{"class":84}," Message",[59,1717,1718],{"class":65}," =",[59,1720,163],{"class":84},[59,1722,166],{"class":88},[59,1724,824],{"class":84},[59,1726,213],{"class":88},[59,1728,1729],{"class":84},"TextMessage",[59,1731,95],{"class":88},[59,1733,1734],{"class":84},"NumberMessage",[59,1736,95],{"class":88},[59,1738,1739],{"class":84},"QuitMessage",[59,1741,1742],{"class":88},">;\n",[59,1744,1745],{"class":61,"line":232},[59,1746,118],{"emptyLinePlaceholder":117},[59,1748,1749],{"class":61,"line":269},[59,1750,1751],{"class":137},"\u002F\u002F 处理消息的 visitor\n",[59,1753,1754,1756],{"class":61,"line":274},[59,1755,1668],{"class":65},[59,1757,1758],{"class":84}," MessageHandler\n",[59,1760,1761],{"class":61,"line":280},[59,1762,493],{"class":88},[59,1764,1765,1768,1771,1774,1776,1778,1780,1782,1785,1788],{"class":61,"line":303},[59,1766,1767],{"class":65},"    void",[59,1769,1770],{"class":65}," operator",[59,1772,1773],{"class":84},"()",[59,1775,172],{"class":88},[59,1777,817],{"class":65},[59,1779,1671],{"class":84},[59,1781,263],{"class":65},[59,1783,1784],{"class":296}," msg",[59,1786,1787],{"class":88},") ",[59,1789,1790],{"class":65},"const\n",[59,1792,1793],{"class":61,"line":308},[59,1794,894],{"class":88},[59,1796,1797,1799,1801,1803,1806,1808,1811,1813,1815,1817,1819],{"class":61,"line":314},[59,1798,899],{"class":84},[59,1800,544],{"class":88},[59,1802,547],{"class":65},[59,1804,1805],{"class":69}," \"Text: \"",[59,1807,553],{"class":65},[59,1809,1810],{"class":88}," msg.text ",[59,1812,547],{"class":65},[59,1814,571],{"class":69},[59,1816,574],{"class":130},[59,1818,577],{"class":69},[59,1820,537],{"class":88},[59,1822,1823],{"class":61,"line":654},[59,1824,928],{"class":88},[59,1826,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845],{"class":61,"line":694},[59,1828,1767],{"class":65},[59,1830,1770],{"class":65},[59,1832,1773],{"class":84},[59,1834,172],{"class":88},[59,1836,817],{"class":65},[59,1838,1686],{"class":84},[59,1840,263],{"class":65},[59,1842,1784],{"class":296},[59,1844,1787],{"class":88},[59,1846,1790],{"class":65},[59,1848,1849],{"class":61,"line":699},[59,1850,894],{"class":88},[59,1852,1853,1855,1857,1859,1862,1864,1867,1869,1871,1873,1875],{"class":61,"line":705},[59,1854,899],{"class":84},[59,1856,544],{"class":88},[59,1858,547],{"class":65},[59,1860,1861],{"class":69}," \"Number: \"",[59,1863,553],{"class":65},[59,1865,1866],{"class":88}," msg.number ",[59,1868,547],{"class":65},[59,1870,571],{"class":69},[59,1872,574],{"class":130},[59,1874,577],{"class":69},[59,1876,537],{"class":88},[59,1878,1879],{"class":61,"line":739},[59,1880,928],{"class":88},[59,1882,1883,1885,1887,1889,1891,1893,1895,1897,1899],{"class":61,"line":744},[59,1884,1767],{"class":65},[59,1886,1770],{"class":65},[59,1888,1773],{"class":84},[59,1890,172],{"class":88},[59,1892,817],{"class":65},[59,1894,1700],{"class":84},[59,1896,263],{"class":65},[59,1898,1787],{"class":88},[59,1900,1790],{"class":65},[59,1902,1903],{"class":61,"line":755},[59,1904,894],{"class":88},[59,1906,1907,1909,1911,1913,1916,1918,1920],{"class":61,"line":1107},[59,1908,899],{"class":84},[59,1910,544],{"class":88},[59,1912,547],{"class":65},[59,1914,1915],{"class":69}," \"Quit!",[59,1917,574],{"class":130},[59,1919,577],{"class":69},[59,1921,537],{"class":88},[59,1923,1924],{"class":61,"line":1112},[59,1925,928],{"class":88},[59,1927,1928],{"class":61,"line":1123},[59,1929,1930],{"class":88},"};\n",[59,1932,1933],{"class":61,"line":1132},[59,1934,118],{"emptyLinePlaceholder":117},[59,1936,1937,1939,1941],{"class":61,"line":1137},[59,1938,198],{"class":65},[59,1940,485],{"class":84},[59,1942,488],{"class":88},[59,1944,1945],{"class":61,"line":1149},[59,1946,493],{"class":88},[59,1948,1949],{"class":61,"line":1156},[59,1950,1951],{"class":88},"    Message msg;\n",[59,1953,1954],{"class":61,"line":1161},[59,1955,118],{"emptyLinePlaceholder":117},[59,1957,1958,1961,1963,1966,1969],{"class":61,"line":1181},[59,1959,1960],{"class":88},"    msg ",[59,1962,127],{"class":65},[59,1964,1965],{"class":88}," TextMessage{",[59,1967,1968],{"class":69},"\"Hello World\"",[59,1970,1930],{"class":88},[59,1972,1973,1975,1977,1979],{"class":61,"line":1188},[59,1974,503],{"class":84},[59,1976,166],{"class":88},[59,1978,287],{"class":84},[59,1980,1981],{"class":88},"(MessageHandler{}, msg);\n",[59,1983,1984],{"class":61,"line":1193},[59,1985,118],{"emptyLinePlaceholder":117},[59,1987,1988,1990,1992,1995,1998],{"class":61,"line":1202},[59,1989,1960],{"class":88},[59,1991,127],{"class":65},[59,1993,1994],{"class":88}," NumberMessage{",[59,1996,1997],{"class":130},"42",[59,1999,1930],{"class":88},[59,2001,2002,2004,2006,2008],{"class":61,"line":1601},[59,2003,503],{"class":84},[59,2005,166],{"class":88},[59,2007,287],{"class":84},[59,2009,1981],{"class":88},[59,2011,2012],{"class":61,"line":1606},[59,2013,118],{"emptyLinePlaceholder":117},[59,2015,2016,2018,2020],{"class":61,"line":1615},[59,2017,1960],{"class":88},[59,2019,127],{"class":65},[59,2021,2022],{"class":88}," QuitMessage{};\n",[59,2024,2026,2028,2030,2032],{"class":61,"line":2025},40,[59,2027,503],{"class":84},[59,2029,166],{"class":88},[59,2031,287],{"class":84},[59,2033,1981],{"class":88},[59,2035,2037],{"class":61,"line":2036},41,[59,2038,118],{"emptyLinePlaceholder":117},[59,2040,2042,2044,2046],{"class":61,"line":2041},42,[59,2043,747],{"class":65},[59,2045,750],{"class":130},[59,2047,537],{"class":88},[59,2049,2051],{"class":61,"line":2050},43,[59,2052,758],{"class":88},[15,2054,2055,765],{},[762,2056,764],{},[50,2058,2061],{"className":2059,"code":2060,"language":771},[769],"Text: Hello World\nNumber: 42\nQuit!\n",[19,2062,2060],{"__ignoreMap":55},[10,2064,2066],{"id":2065},"runtime-results","runtime results",[15,2068,2069],{},"See the \"running results\" for each example above.",[10,2071,2073],{"id":2072},"key-syntax-explanation-in-the-example","Key syntax explanation in the example",[15,2075,2076],{},"|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[2078,2079],"hr",{},[340,2081,2082,2103],{},[343,2083,2084],{},[346,2085,2086,2091,2094,2097,2100],{},[349,2087,2088],{"align":351},[762,2089,2090],{},"Example",[349,2092,2093],{"align":351},"Discusses what",[349,2095,2096],{"align":351},"Newly emerged syntax",[349,2098,2099],{"align":351},"Why write it this way",[349,2101,2102],{"align":351},"Precautions",[357,2104,2105,2127,2145,2164],{},[346,2106,2107,2110,2113,2121,2124],{},[362,2108,2109],{"align":351},"Example 1",[362,2111,2112],{"align":351},"Basic Assignment and get",[362,2114,2115,2118,2119],{"align":351},[19,2116,2117],{},"std::variant\u003Cint, double, string>","、",[19,2120,386],{},[362,2122,2123],{"align":351},"A variant is type-safe and automatically switches its type when assigned.",[362,2125,2126],{"align":351},"An incorrect type will throw an exception.",[346,2128,2129,2132,2135,2139,2142],{},[362,2130,2131],{"align":351},"Example 2",[362,2133,2134],{"align":351},"get_if safe access",[362,2136,2137],{"align":351},[19,2138,400],{},[362,2140,2141],{"align":351},"returns pointer, if type mismatch returns nullptr",[362,2143,2144],{"align":351},"More secure than get, recommended",[346,2146,2147,2150,2153,2158,2161],{},[362,2148,2149],{"align":351},"Example 3",[362,2151,2152],{"align":351},"visitor pattern",[362,2154,2155],{"align":351},[19,2156,2157],{},"std::visit(lambda, v)",[362,2159,2160],{"align":351},"visit forces coverage of all types, making it the optimal way to access a variant.",[362,2162,2163],{"align":351},"Generic lambdas + std::visit is the most concise combination.",[346,2165,2166,2169,2172,2175,2178],{},[362,2167,2168],{"align":351},"Example 4",[362,2170,2171],{"align":351},"Message Distribution Pattern",[362,2173,2174],{"align":351},"struct visitor + variant",[362,2176,2177],{"align":351},"Using variant and visitor for type-safe message handling",[362,2179,2180,2181,2184],{"align":351},"Visitors must provide an ",[19,2182,2183],{},"operator()"," for each type.",[10,2186,2188],{"id":2187},"variant-is-suitable-for-one-of-a-limited-number-of-types","Variant is suitable for \"one of a limited number of types.\"",[15,2190,2191,2193],{},[19,2192,824],{}," isn't meant to replace all inheritance and polymorphism. It's best suited for scenarios where you have a limited set of type kinds and you want the compiler to remind you to handle all the cases.",[340,2195,2196,2206],{},[343,2197,2198],{},[346,2199,2200,2203],{},[349,2201,2202],{"align":351},"Scene",[349,2204,2205],{"align":351},"Recommendation",[357,2207,2208,2217,2226,2235,2243],{},[346,2209,2210,2213],{},[362,2211,2212],{"align":351},"Messages are only of three types: Text, Number, and Quit.",[362,2214,2215],{"align":351},[19,2216,5],{},[346,2218,2219,2222],{},[362,2220,2221],{"align":351},"States only consist of a few categories: Idle \u002F Running \u002F Error.",[362,2223,2224],{"align":351},[19,2225,5],{},[346,2227,2228,2231],{},[362,2229,2230],{"align":351},"The parsing result could be of type int, double, or string.",[362,2232,2233],{"align":351},[19,2234,5],{},[346,2236,2237,2240],{},[362,2238,2239],{"align":351},"There are many types and they require runtime plugin extensions.",[362,2241,2242],{"align":351},"Inheritance + Virtual Functions",[346,2244,2245,2248],{},[362,2246,2247],{"align":351},"All objects share a common interface.",[362,2249,2250],{"align":351},"Polymorphic interfaces are more natural.",[439,2252,2254],{"id":2253},"example-5-using-variant-to-represent-a-state-machine","Example 5: Using variant to represent a state machine",[50,2256,2258],{"className":52,"code":2257,"language":54,"meta":55,"style":55},"#include \u003Ciostream>\n#include \u003Cstring>\n#include \u003Ctype_traits>\n#include \u003Cvariant>\n\nstruct Idle {};\nstruct Running\n{\n    int task_id;\n};\nstruct Error\n{\n    std::string message;\n};\n\n\u002F\u002F variant 表示一个变量可以在多个候选类型中保存其中一种。\nusing State = std::variant\u003CIdle, Running, Error>;\n\nvoid print_state(const State& state)\n{\n    \u002F\u002F visit 会根据 variant 当前保存的类型调用对应处理逻辑。\n    std::visit([](const auto& s) {\n        using T = std::decay_t\u003Cdecltype(s)>;\n\n        if constexpr (std::is_same_v\u003CT, Idle>)\n        {\n            std::cout \u003C\u003C \"state: idle\\n\";\n        }\n        else if constexpr (std::is_same_v\u003CT, Running>)\n        {\n            std::cout \u003C\u003C \"state: running task \" \u003C\u003C s.task_id \u003C\u003C \"\\n\";\n        }\n        else if constexpr (std::is_same_v\u003CT, Error>)\n        {\n            std::cout \u003C\u003C \"state: error \" \u003C\u003C s.message \u003C\u003C \"\\n\";\n        }\n    }, state);\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    State state = Idle{};\n    print_state(state);\n\n    state = Running{42};\n    print_state(state);\n\n    state = Error{\"motor timeout\"};\n    print_state(state);\n\n    return 0;\n}\n",[19,2259,2260,2266,2272,2278,2284,2288,2297,2304,2308,2316,2320,2327,2331,2338,2342,2346,2351,2383,2387,2407,2411,2416,2435,2459,2463,2484,2488,2506,2510,2534,2538,2564,2568,2591,2595,2621,2625,2630,2634,2638,2646,2650,2655,2665,2674,2679,2694,2701,2706,2721,2728,2733,2742],{"__ignoreMap":55},[59,2261,2262,2264],{"class":61,"line":62},[59,2263,66],{"class":65},[59,2265,454],{"class":69},[59,2267,2268,2270],{"class":61,"line":114},[59,2269,66],{"class":65},[59,2271,467],{"class":69},[59,2273,2274,2276],{"class":61,"line":121},[59,2275,66],{"class":65},[59,2277,474],{"class":69},[59,2279,2280,2282],{"class":61,"line":141},[59,2281,66],{"class":65},[59,2283,70],{"class":69},[59,2285,2286],{"class":61,"line":156},[59,2287,118],{"emptyLinePlaceholder":117},[59,2289,2290,2292,2295],{"class":61,"line":184},[59,2291,1668],{"class":65},[59,2293,2294],{"class":84}," Idle",[59,2296,1703],{"class":88},[59,2298,2299,2301],{"class":61,"line":189},[59,2300,1668],{"class":65},[59,2302,2303],{"class":84}," Running\n",[59,2305,2306],{"class":61,"line":195},[59,2307,493],{"class":88},[59,2309,2310,2313],{"class":61,"line":221},[59,2311,2312],{"class":65},"    int",[59,2314,2315],{"class":88}," task_id;\n",[59,2317,2318],{"class":61,"line":226},[59,2319,1930],{"class":88},[59,2321,2322,2324],{"class":61,"line":232},[59,2323,1668],{"class":65},[59,2325,2326],{"class":84}," Error\n",[59,2328,2329],{"class":61,"line":269},[59,2330,493],{"class":88},[59,2332,2333,2335],{"class":61,"line":274},[59,2334,503],{"class":84},[59,2336,2337],{"class":88},"::string message;\n",[59,2339,2340],{"class":61,"line":280},[59,2341,1930],{"class":88},[59,2343,2344],{"class":61,"line":303},[59,2345,118],{"emptyLinePlaceholder":117},[59,2347,2348],{"class":61,"line":308},[59,2349,2350],{"class":137},"\u002F\u002F variant 表示一个变量可以在多个候选类型中保存其中一种。\n",[59,2352,2353,2355,2358,2360,2362,2364,2366,2368,2371,2373,2376,2378,2381],{"class":61,"line":314},[59,2354,1712],{"class":65},[59,2356,2357],{"class":84}," State",[59,2359,1718],{"class":65},[59,2361,163],{"class":84},[59,2363,166],{"class":88},[59,2365,824],{"class":84},[59,2367,213],{"class":88},[59,2369,2370],{"class":84},"Idle",[59,2372,95],{"class":88},[59,2374,2375],{"class":84},"Running",[59,2377,95],{"class":88},[59,2379,2380],{"class":84},"Error",[59,2382,1742],{"class":88},[59,2384,2385],{"class":61,"line":654},[59,2386,118],{"emptyLinePlaceholder":117},[59,2388,2389,2391,2394,2396,2398,2400,2402,2405],{"class":61,"line":694},[59,2390,809],{"class":65},[59,2392,2393],{"class":84}," print_state",[59,2395,172],{"class":88},[59,2397,817],{"class":65},[59,2399,2357],{"class":84},[59,2401,263],{"class":65},[59,2403,2404],{"class":296}," state",[59,2406,850],{"class":88},[59,2408,2409],{"class":61,"line":699},[59,2410,493],{"class":88},[59,2412,2413],{"class":61,"line":705},[59,2414,2415],{"class":137},"    \u002F\u002F visit 会根据 variant 当前保存的类型调用对应处理逻辑。\n",[59,2417,2418,2420,2422,2424,2426,2428,2430,2433],{"class":61,"line":739},[59,2419,503],{"class":84},[59,2421,166],{"class":88},[59,2423,287],{"class":84},[59,2425,290],{"class":88},[59,2427,817],{"class":65},[59,2429,1306],{"class":65},[59,2431,2432],{"class":296}," s",[59,2434,1311],{"class":88},[59,2436,2437,2440,2443,2445,2447,2449,2451,2453,2456],{"class":61,"line":744},[59,2438,2439],{"class":65},"        using",[59,2441,2442],{"class":84}," T",[59,2444,1718],{"class":65},[59,2446,163],{"class":84},[59,2448,166],{"class":88},[59,2450,1483],{"class":130},[59,2452,213],{"class":88},[59,2454,2455],{"class":65},"decltype",[59,2457,2458],{"class":88},"(s)>;\n",[59,2460,2461],{"class":61,"line":755},[59,2462,118],{"emptyLinePlaceholder":117},[59,2464,2465,2467,2469,2471,2473,2475,2477,2480,2482],{"class":61,"line":1107},[59,2466,1464],{"class":65},[59,2468,1467],{"class":65},[59,2470,238],{"class":88},[59,2472,85],{"class":84},[59,2474,1474],{"class":88},[59,2476,213],{"class":65},[59,2478,2479],{"class":88},"T, Idle",[59,2481,108],{"class":65},[59,2483,850],{"class":88},[59,2485,2486],{"class":61,"line":1112},[59,2487,1506],{"class":88},[59,2489,2490,2493,2495,2497,2500,2502,2504],{"class":61,"line":1123},[59,2491,2492],{"class":84},"            std",[59,2494,544],{"class":88},[59,2496,547],{"class":65},[59,2498,2499],{"class":69}," \"state: idle",[59,2501,574],{"class":130},[59,2503,577],{"class":69},[59,2505,537],{"class":88},[59,2507,2508],{"class":61,"line":1132},[59,2509,1524],{"class":88},[59,2511,2512,2515,2517,2519,2521,2523,2525,2527,2530,2532],{"class":61,"line":1137},[59,2513,2514],{"class":65},"        else",[59,2516,936],{"class":65},[59,2518,1467],{"class":65},[59,2520,238],{"class":88},[59,2522,85],{"class":84},[59,2524,1474],{"class":88},[59,2526,213],{"class":65},[59,2528,2529],{"class":88},"T, Running",[59,2531,108],{"class":65},[59,2533,850],{"class":88},[59,2535,2536],{"class":61,"line":1149},[59,2537,1506],{"class":88},[59,2539,2540,2542,2544,2546,2549,2551,2554,2556,2558,2560,2562],{"class":61,"line":1156},[59,2541,2492],{"class":84},[59,2543,544],{"class":88},[59,2545,547],{"class":65},[59,2547,2548],{"class":69}," \"state: running task \"",[59,2550,553],{"class":65},[59,2552,2553],{"class":88}," s.task_id ",[59,2555,547],{"class":65},[59,2557,571],{"class":69},[59,2559,574],{"class":130},[59,2561,577],{"class":69},[59,2563,537],{"class":88},[59,2565,2566],{"class":61,"line":1161},[59,2567,1524],{"class":88},[59,2569,2570,2572,2574,2576,2578,2580,2582,2584,2587,2589],{"class":61,"line":1181},[59,2571,2514],{"class":65},[59,2573,936],{"class":65},[59,2575,1467],{"class":65},[59,2577,238],{"class":88},[59,2579,85],{"class":84},[59,2581,1474],{"class":88},[59,2583,213],{"class":65},[59,2585,2586],{"class":88},"T, Error",[59,2588,108],{"class":65},[59,2590,850],{"class":88},[59,2592,2593],{"class":61,"line":1188},[59,2594,1506],{"class":88},[59,2596,2597,2599,2601,2603,2606,2608,2611,2613,2615,2617,2619],{"class":61,"line":1193},[59,2598,2492],{"class":84},[59,2600,544],{"class":88},[59,2602,547],{"class":65},[59,2604,2605],{"class":69}," \"state: error \"",[59,2607,553],{"class":65},[59,2609,2610],{"class":88}," s.message ",[59,2612,547],{"class":65},[59,2614,571],{"class":69},[59,2616,574],{"class":130},[59,2618,577],{"class":69},[59,2620,537],{"class":88},[59,2622,2623],{"class":61,"line":1202},[59,2624,1524],{"class":88},[59,2626,2627],{"class":61,"line":1601},[59,2628,2629],{"class":88},"    }, state);\n",[59,2631,2632],{"class":61,"line":1606},[59,2633,758],{"class":88},[59,2635,2636],{"class":61,"line":1615},[59,2637,118],{"emptyLinePlaceholder":117},[59,2639,2640,2642,2644],{"class":61,"line":2025},[59,2641,198],{"class":65},[59,2643,485],{"class":84},[59,2645,488],{"class":88},[59,2647,2648],{"class":61,"line":2036},[59,2649,493],{"class":88},[59,2651,2652],{"class":61,"line":2041},[59,2653,2654],{"class":137},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[59,2656,2657,2660,2662],{"class":61,"line":2050},[59,2658,2659],{"class":88},"    State state ",[59,2661,127],{"class":65},[59,2663,2664],{"class":88}," Idle{};\n",[59,2666,2668,2671],{"class":61,"line":2667},44,[59,2669,2670],{"class":84},"    print_state",[59,2672,2673],{"class":88},"(state);\n",[59,2675,2677],{"class":61,"line":2676},45,[59,2678,118],{"emptyLinePlaceholder":117},[59,2680,2682,2685,2687,2690,2692],{"class":61,"line":2681},46,[59,2683,2684],{"class":88},"    state ",[59,2686,127],{"class":65},[59,2688,2689],{"class":88}," Running{",[59,2691,1997],{"class":130},[59,2693,1930],{"class":88},[59,2695,2697,2699],{"class":61,"line":2696},47,[59,2698,2670],{"class":84},[59,2700,2673],{"class":88},[59,2702,2704],{"class":61,"line":2703},48,[59,2705,118],{"emptyLinePlaceholder":117},[59,2707,2709,2711,2713,2716,2719],{"class":61,"line":2708},49,[59,2710,2684],{"class":88},[59,2712,127],{"class":65},[59,2714,2715],{"class":88}," Error{",[59,2717,2718],{"class":69},"\"motor timeout\"",[59,2720,1930],{"class":88},[59,2722,2724,2726],{"class":61,"line":2723},50,[59,2725,2670],{"class":84},[59,2727,2673],{"class":88},[59,2729,2731],{"class":61,"line":2730},51,[59,2732,118],{"emptyLinePlaceholder":117},[59,2734,2736,2738,2740],{"class":61,"line":2735},52,[59,2737,747],{"class":65},[59,2739,750],{"class":130},[59,2741,537],{"class":88},[59,2743,2745],{"class":61,"line":2744},53,[59,2746,758],{"class":88},[15,2748,2749,765],{},[762,2750,764],{},[50,2752,2755],{"className":2753,"code":2754,"language":771},[769],"state: idle\nstate: running task 42\nstate: error motor timeout\n",[19,2756,2754],{"__ignoreMap":55},[15,2758,2759,2760,95,2763,2765],{},"Here, the state can only ever be one of three. Rather than adding extra fields with ",[19,2761,2762],{},"int state_code",[19,2764,824],{}," can place the data needed for each state within its corresponding type, reducing issues like \"reading the running field while in an error state.\"",[10,2767,2769],{"id":2768},"common-errors","Common Errors",[15,2771,2772],{},[762,2773,2774],{},"Error 1: Incorrect type used with get, causing exceptions to be thrown.",[50,2776,2778],{"className":52,"code":2777,"language":54,"meta":55,"style":55},"std::variant\u003Cint, double> v = 42;\nstd::cout \u003C\u003C std::get\u003Cdouble>(v);  \u002F\u002F ❌ 抛出 std::bad_variant_access！\n",[19,2779,2780,2802],{"__ignoreMap":55},[59,2781,2782,2784,2786,2788,2790,2793,2796,2798,2800],{"class":61,"line":62},[59,2783,85],{"class":84},[59,2785,89],{"class":88},[59,2787,92],{"class":65},[59,2789,95],{"class":88},[59,2791,2792],{"class":65},"double>",[59,2794,2795],{"class":88}," v ",[59,2797,127],{"class":65},[59,2799,131],{"class":130},[59,2801,537],{"class":88},[59,2803,2804,2806,2808,2810,2812,2814,2816,2818,2820,2823],{"class":61,"line":114},[59,2805,85],{"class":84},[59,2807,544],{"class":88},[59,2809,547],{"class":65},[59,2811,163],{"class":84},[59,2813,166],{"class":88},[59,2815,210],{"class":84},[59,2817,213],{"class":88},[59,2819,98],{"class":65},[59,2821,2822],{"class":88},">(v);",[59,2824,2825],{"class":137},"  \u002F\u002F ❌ 抛出 std::bad_variant_access！\n",[15,2827,2828,2829,2832,2833,2836],{},"Correct approach: First use ",[19,2830,2831],{},"std::holds_alternative\u003Cdouble>(v)"," to check, or use ",[19,2834,2835],{},"std::get_if",".",[15,2838,2839],{},"Error 2: Default construction when variant has no default type",[50,2841,2843],{"className":52,"code":2842,"language":54,"meta":55,"style":55},"std::variant\u003Cint, std::string> v;  \u002F\u002F 默认构造第一个类型的默认值（int = 0）\n",[19,2844,2845],{"__ignoreMap":55},[59,2846,2847,2849,2851,2853,2855,2857,2859,2861,2864],{"class":61,"line":62},[59,2848,85],{"class":84},[59,2850,89],{"class":88},[59,2852,92],{"class":65},[59,2854,95],{"class":88},[59,2856,85],{"class":84},[59,2858,105],{"class":88},[59,2860,108],{"class":65},[59,2862,2863],{"class":88}," v;",[59,2865,2866],{"class":137},"  \u002F\u002F 默认构造第一个类型的默认值（int = 0）\n",[15,2868,2869],{},"This situation is valid, but if the first type lacks a default constructor, compilation fails.",[15,2871,2872],{},[762,2873,2874],{},"Error 3: Visitor of visit has not covered all types",[50,2876,2878],{"className":52,"code":2877,"language":54,"meta":55,"style":55},"struct Visitor {\n    void operator()(int) {}\n    \u002F\u002F 缺少 double 和 string 的 operator()\n};\nstd::variant\u003Cint, double, std::string> v;\nstd::visit(Visitor{}, v);  \u002F\u002F ❌ 编译错误！\n",[19,2879,2880,2889,2904,2909,2913,2935],{"__ignoreMap":55},[59,2881,2882,2884,2887],{"class":61,"line":62},[59,2883,1668],{"class":65},[59,2885,2886],{"class":84}," Visitor",[59,2888,1459],{"class":88},[59,2890,2891,2893,2895,2897,2899,2901],{"class":61,"line":114},[59,2892,1767],{"class":65},[59,2894,1770],{"class":65},[59,2896,1773],{"class":84},[59,2898,172],{"class":88},[59,2900,198],{"class":65},[59,2902,2903],{"class":88},") {}\n",[59,2905,2906],{"class":61,"line":121},[59,2907,2908],{"class":137},"    \u002F\u002F 缺少 double 和 string 的 operator()\n",[59,2910,2911],{"class":61,"line":141},[59,2912,1930],{"class":88},[59,2914,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933],{"class":61,"line":156},[59,2916,85],{"class":84},[59,2918,89],{"class":88},[59,2920,92],{"class":65},[59,2922,95],{"class":88},[59,2924,98],{"class":65},[59,2926,95],{"class":88},[59,2928,85],{"class":84},[59,2930,105],{"class":88},[59,2932,108],{"class":65},[59,2934,111],{"class":88},[59,2936,2937,2939,2941,2943,2946],{"class":61,"line":184},[59,2938,85],{"class":84},[59,2940,166],{"class":88},[59,2942,287],{"class":84},[59,2944,2945],{"class":88},"(Visitor{}, v);",[59,2947,2948],{"class":137},"  \u002F\u002F ❌ 编译错误！\n",[15,2950,2951,2952,2954],{},"Correct approach: The visitor for visit must provide ",[19,2953,2183],{}," for all types in the variant, or use a generic lambda.",[10,2956,2957],{"id":2957},"使用建议",[2959,2960,2961,2965,2968,2971,2974],"ul",{},[2962,2963,2964],"li",{},"明确目标：在开始前确定您的具体需求，以便选择最合适的工具或教程。",[2962,2966,2967],{},"充分利用资源：参考官方文档、教程和博客，这些资料能帮助您快速上手并解决问题。",[2962,2969,2970],{},"实践应用：通过动手操作项目或编写代码来巩固学习成果，提升实际操作能力。",[2962,2972,2973],{},"问题解决：遇到困难时，查阅参考资料或寻求社区支持，逐步培养独立解决问题的能力。",[2962,2975,2976],{},"分享经验：完成项目后，可以撰写文章或博客分享心得，帮助其他学习者。",[15,2978,2979],{},"如果需要针对特定领域（如单片机、机器人或环境搭建）的进一步建议，请提供更多信息，我将为您细化内容。",[2981,2982,2983,2991,3000,3006,3012,3018],"ol",{},[2962,2984,2985,2990],{},[762,2986,2987,2988],{},"替代 ",[19,2989,21],{},"：type-safe variant, knows what it currently holds.",[2962,2992,2993,2836],{},[762,2994,2995,2996,2999],{},"Using ",[19,2997,2998],{},"std::visit"," + generic lambda is the most concise way to access",[2962,3001,3002,3005],{},[762,3003,3004],{},"When you need to \"know the current type\"",": return a pointer, safely and efficiently.",[2962,3007,3008,3011],{},[762,3009,3010],{},"Implementing message\u002Fevent dispatching with variant + visit",": A rudimentary form of pattern matching.",[2962,3013,3014,3017],{},[762,3015,3016],{},"The size of a variant is the largest among all types + the index field",": Avoid storing many large types.",[2962,3019,3020,3023],{},[762,3021,3022],{},"variant is clearer when type kinds are limited",": If types need to be extended with plugins, inheritance and virtual functions are usually more appropriate.",[10,3025,3027],{"id":3026},"summary","Summary",[2959,3029,3030,3035,3043,3048],{},[2962,3031,3032,3034],{},[19,3033,36],{}," is a type-safe union.",[2962,3036,3037,3039,3040,3042],{},[19,3038,386],{}," direct access (unsafe), ",[19,3041,400],{}," returns pointer (safe).",[2962,3044,3045,3047],{},[19,3046,420],{}," is the most recommended approach to force coverage for all types.",[2962,3049,3050],{},"Suitable for scenarios like message distribution, optional configuration, and state machines.",[3052,3053,3054],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":114,"depth":114,"links":3056},[3057,3058,3059,3060,3061,3062,3063,3069,3070,3071,3074,3075,3076],{"id":12,"depth":114,"text":13},{"id":30,"depth":114,"text":31},{"id":40,"depth":114,"text":41},{"id":47,"depth":114,"text":48},{"id":73,"depth":114,"text":74},{"id":337,"depth":114,"text":338},{"id":436,"depth":114,"text":437,"children":3064},[3065,3066,3067,3068],{"id":441,"depth":121,"text":442},{"id":776,"depth":121,"text":777},{"id":1217,"depth":121,"text":1218},{"id":1630,"depth":121,"text":1631},{"id":2065,"depth":114,"text":2066},{"id":2072,"depth":114,"text":2073},{"id":2187,"depth":114,"text":2188,"children":3072},[3073],{"id":2253,"depth":121,"text":2254},{"id":2768,"depth":114,"text":2769},{"id":2957,"depth":114,"text":2957},{"id":3026,"depth":114,"text":3027},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","2000-1500","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant",false,null,"en-US","en-us",{},{"title":5,"description":55},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","Ar-vp4-cCHt8lGLLK22eraaOiOC6QCLpq4sr6UMuUfU",[3096,3102,3107,3112,3117,3122,3127,3132,3137,3142,3147,3152,3157,3162,3167,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222,3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3287,3292,3296,3301,3306,3311,3316,3321,3326,3331,3336,3341,3346,3351,3352,3357,3362,3367,3372,3377,3382,3387,3392,3397,3402,3407,3412,3417,3422,3427,3432,3437,3442,3447,3452,3457,3462,3467,3472,3477,3482,3487,3492,3497],{"path":3097,"stem":3098,"title":3099,"date":3079,"chapterOrder":3100,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":3103,"stem":3104,"title":3105,"date":3079,"chapterOrder":3106,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":3108,"stem":3109,"title":3110,"date":3079,"chapterOrder":3111,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":3113,"stem":3114,"title":3115,"date":3079,"chapterOrder":3116,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":3118,"stem":3119,"title":3120,"date":3079,"chapterOrder":3121,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":3123,"stem":3124,"title":3125,"date":3079,"chapterOrder":3126,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":3128,"stem":3129,"title":3130,"date":3079,"chapterOrder":3131,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":3133,"stem":3134,"title":3135,"date":3079,"chapterOrder":3136,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":3138,"stem":3139,"title":3140,"date":3079,"chapterOrder":3141,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":3143,"stem":3144,"title":3145,"date":3079,"chapterOrder":3146,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":3148,"stem":3149,"title":3150,"date":3079,"chapterOrder":3151,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":3153,"stem":3154,"title":3155,"date":3079,"chapterOrder":3156,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":3158,"stem":3159,"title":3160,"date":3079,"chapterOrder":3161,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":3163,"stem":3164,"title":3165,"date":3079,"chapterOrder":3166,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":3168,"stem":3169,"title":3170,"date":3079,"chapterOrder":3171,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":3173,"stem":3174,"title":3175,"date":3079,"chapterOrder":3176,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":3178,"stem":3179,"title":3180,"date":3079,"chapterOrder":3181,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":3183,"stem":3184,"title":3185,"date":3079,"chapterOrder":3186,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":3188,"stem":3189,"title":3190,"date":3079,"chapterOrder":3191,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":3193,"stem":3194,"title":3195,"date":3079,"chapterOrder":3196,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":3198,"stem":3199,"title":3200,"date":3079,"chapterOrder":3201,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":3203,"stem":3204,"title":3205,"date":3079,"chapterOrder":3206,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":3208,"stem":3209,"title":3210,"date":3079,"chapterOrder":3211,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":3213,"stem":3214,"title":3215,"date":3079,"chapterOrder":3216,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":3218,"stem":3219,"title":3220,"date":3079,"chapterOrder":3221,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":3223,"stem":3224,"title":3225,"date":3079,"chapterOrder":3226,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":3228,"stem":3229,"title":3230,"date":3079,"chapterOrder":3231,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":3233,"stem":3234,"title":3235,"date":3079,"chapterOrder":3236,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":3238,"stem":3239,"title":3240,"date":3079,"chapterOrder":3241,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":3243,"stem":3244,"title":3245,"date":3079,"chapterOrder":3246,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":3248,"stem":3249,"title":3250,"date":3079,"chapterOrder":3251,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":3253,"stem":3254,"title":3255,"date":3079,"chapterOrder":3256,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":3258,"stem":3259,"title":3260,"date":3079,"chapterOrder":3261,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":3263,"stem":3264,"title":3265,"date":3079,"chapterOrder":3266,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":3268,"stem":3269,"title":3270,"date":3079,"chapterOrder":3271,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":3273,"stem":3274,"title":3275,"date":3079,"chapterOrder":3276,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":3278,"stem":3279,"title":3280,"date":3079,"chapterOrder":3281,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":3283,"stem":3284,"title":3285,"date":3079,"chapterOrder":3286,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":3288,"stem":3289,"title":3290,"date":3079,"chapterOrder":3291,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":3293,"stem":3294,"title":1712,"date":3079,"chapterOrder":3295,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","2000-0300",{"path":3297,"stem":3298,"title":3299,"date":3079,"chapterOrder":3300,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":3302,"stem":3303,"title":3304,"date":3079,"chapterOrder":3305,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":3307,"stem":3308,"title":3309,"date":3079,"chapterOrder":3310,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":3312,"stem":3313,"title":3314,"date":3079,"chapterOrder":3315,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":3317,"stem":3318,"title":3319,"date":3079,"chapterOrder":3320,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":3322,"stem":3323,"title":3324,"date":3079,"chapterOrder":3325,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":3327,"stem":3328,"title":3329,"date":3079,"chapterOrder":3330,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":3332,"stem":3333,"title":3334,"date":3079,"chapterOrder":3335,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":3337,"stem":3338,"title":3339,"date":3079,"chapterOrder":3340,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":3342,"stem":3343,"title":3344,"date":3079,"chapterOrder":3345,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":3347,"stem":3348,"title":3349,"date":3079,"chapterOrder":3350,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":3077,"stem":3093,"title":5,"date":3079,"chapterOrder":3078,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},{"path":3353,"stem":3354,"title":3355,"date":3079,"chapterOrder":3356,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":3358,"stem":3359,"title":3360,"date":3079,"chapterOrder":3361,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":3363,"stem":3364,"title":3365,"date":3079,"chapterOrder":3366,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":3368,"stem":3369,"title":3370,"date":3079,"chapterOrder":3371,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":3373,"stem":3374,"title":3375,"date":3079,"chapterOrder":3376,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":3378,"stem":3379,"title":3380,"date":3079,"chapterOrder":3381,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":3383,"stem":3384,"title":3385,"date":3079,"chapterOrder":3386,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":3388,"stem":3389,"title":3390,"date":3079,"chapterOrder":3391,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":3393,"stem":3394,"title":3395,"date":3079,"chapterOrder":3396,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":3398,"stem":3399,"title":3400,"date":3079,"chapterOrder":3401,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":3403,"stem":3404,"title":3405,"date":3079,"chapterOrder":3406,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":3408,"stem":3409,"title":3410,"date":3079,"chapterOrder":3411,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":3413,"stem":3414,"title":3415,"date":3079,"chapterOrder":3416,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":3418,"stem":3419,"title":3420,"date":3079,"chapterOrder":3421,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":3423,"stem":3424,"title":3425,"date":3079,"chapterOrder":3426,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":3428,"stem":3429,"title":3430,"date":3079,"chapterOrder":3431,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":3433,"stem":3434,"title":3435,"date":3079,"chapterOrder":3436,"chapterDepth":114,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":3438,"stem":3439,"title":3440,"date":3079,"chapterOrder":3441,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":3443,"stem":3444,"title":3445,"date":3079,"chapterOrder":3446,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":3448,"stem":3449,"title":3450,"date":3079,"chapterOrder":3451,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":3453,"stem":3454,"title":3455,"date":3079,"chapterOrder":3456,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":3458,"stem":3459,"title":3460,"date":3079,"chapterOrder":3461,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":3463,"stem":3464,"title":3465,"date":3079,"chapterOrder":3466,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":3468,"stem":3469,"title":3470,"date":3079,"chapterOrder":3471,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":3473,"stem":3474,"title":3475,"date":3079,"chapterOrder":3476,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":3478,"stem":3479,"title":3480,"date":3079,"chapterOrder":3481,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":3483,"stem":3484,"title":3485,"date":3079,"chapterOrder":3486,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":3488,"stem":3489,"title":3490,"date":3079,"chapterOrder":3491,"chapterDepth":62,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":3493,"stem":3494,"title":3495,"date":3079,"chapterOrder":3496,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":3086},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":3082,"stem":3498,"title":3499,"date":3079,"chapterOrder":3087,"chapterDepth":3101,"docKey":3081,"docRoot":3082,"docTitle":3083,"isWikiDoc":117,"isWikiIndex":117},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3501},[3502,3503,3506,3509,3512],{"path":3077,"localeSlug":3089,"i18nKey":3085},{"path":3504,"localeSlug":3505,"i18nKey":3085},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","zh-hant",{"path":3507,"localeSlug":3508,"i18nKey":3085},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","zh-hk",{"path":3510,"localeSlug":3511,"i18nKey":3085},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","zh-tw",{"path":3513,"localeSlug":3514,"i18nKey":3085},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","zh-cn",[3077,3092,3504,3092,3507,3092,3510,3092,3513,3092],1784646868553]