[{"data":1,"prerenderedAt":3097},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr":2676,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr":3081,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr":3096},{"id":4,"title":5,"body":6,"canonicalPath":2658,"chapterDepth":136,"chapterOrder":2659,"date":2660,"description":129,"docI18nKey":2661,"docKey":2662,"docRoot":2663,"docTitle":2664,"extension":2665,"i18nKey":2666,"isBlogPost":2667,"isWikiDoc":169,"isWikiIndex":2667,"layout":2668,"legacyPath":2668,"locale":2669,"localeSlug":2670,"meta":2671,"navigation":169,"path":2658,"seo":2672,"sourcePath":2673,"sourceStem":2666,"stem":2674,"wikiDepth":136,"__hash__":2675},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr.md","constexpr",{"type":7,"value":8,"toc":2637},"minimark",[9,14,18,29,33,38,102,106,109,113,119,123,318,322,391,394,406,410,423,475,487,491,496,696,702,710,714,1003,1007,1013,1017,1578,1582,1588,1592,1789,1793,1799,1803,2088,2092,2098,2102,2105,2109,2112,2114,2233,2237,2242,2274,2287,2292,2373,2376,2381,2447,2450,2455,2518,2529,2532,2551,2554,2589,2593,2633],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17],"p",{},"Some computations are known at compile time, but ordinary functions would calculate them at runtime—wasting CPU time. Additionally, certain scenarios (array size, template parameters, static_assert) require compile-time constants, which ordinary variables cannot provide.",[15,19,20,23,24,28],{},[21,22,5],"code",{}," allows functions and variables to be evaluated ",[25,26,27],"strong",{},"at compile time",", shifting runtime overhead to compile time, and can also be used where \"compile-time constants\" are required.",[10,30,32],{"id":31},"what-is-this-feature","What is this feature?",[15,34,35,37],{},[21,36,5],{}," declares that a variable or function can be evaluated at compile time. Introduced starting with C++11, this feature has been enhanced in subsequent standards.",[39,40,41,55],"table",{},[42,43,44],"thead",{},[45,46,47,52],"tr",{},[48,49,51],"th",{"align":50},"left","C++ version",[48,53,54],{"align":50},"Supported",[56,57,58,67,75,83,94],"tbody",{},[45,59,60,64],{},[61,62,63],"td",{"align":50},"C++11",[61,65,66],{"align":50},"Simple constexpr functions (a single return statement) and constexpr variables.",[45,68,69,72],{},[61,70,71],{"align":50},"C++14",[61,73,74],{"align":50},"constexpr functions support multiple statements and loops.",[45,76,77,80],{},[61,78,79],{"align":50},"C++17",[61,81,82],{"align":50},"constexpr lambda",[45,84,85,88],{},[61,86,87],{"align":50},"C++20",[61,89,90,93],{"align":50},[21,91,92],{},"consteval"," (must be executed at compile-time), enhanced constexpr",[45,95,96,99],{},[61,97,98],{"align":50},"C++23",[61,100,101],{"align":50},"constexpr supports more standard libraries",[10,103,105],{"id":104},"c-standard-version","C++ standard version",[15,107,108],{},"C++11 (with each subsequent version bringing further enhancements)",[10,110,112],{"id":111},"required-header-files","Required header files",[15,114,115,116,118],{},"No additional header files are required. ",[21,117,5],{}," is a language keyword.",[10,120,122],{"id":121},"basic-syntax","Basic Syntax",[124,125,130],"pre",{"className":126,"code":127,"language":128,"meta":129,"style":129},"language-cpp shiki shiki-themes github-light github-dark","\u002F\u002F constexpr 变量：值在编译期确定\nconstexpr int size = 100;\n\n\u002F\u002F constexpr 函数：可以在编译期执行\nconstexpr int square(int n)\n{\n    return n * n;\n}\n\n\u002F\u002F constexpr 变量可以用编译期函数初始化\nconstexpr int val = square(5);  \u002F\u002F 编译期计算\n\n\u002F\u002F C++20 consteval：必须在编译期执行（不能运行时调用）\nconsteval int cube(int n)\n{\n    return n * n * n;\n}\n","cpp","",[21,131,132,141,164,171,177,201,207,222,228,233,239,264,269,275,293,298,313],{"__ignoreMap":129},[133,134,137],"span",{"class":135,"line":136},"line",1,[133,138,140],{"class":139},"sJ8bj","\u002F\u002F constexpr 变量：值在编译期确定\n",[133,142,144,147,150,154,157,161],{"class":135,"line":143},2,[133,145,5],{"class":146},"szBVR",[133,148,149],{"class":146}," int",[133,151,153],{"class":152},"sVt8B"," size ",[133,155,156],{"class":146},"=",[133,158,160],{"class":159},"sj4cs"," 100",[133,162,163],{"class":152},";\n",[133,165,167],{"class":135,"line":166},3,[133,168,170],{"emptyLinePlaceholder":169},true,"\n",[133,172,174],{"class":135,"line":173},4,[133,175,176],{"class":139},"\u002F\u002F constexpr 函数：可以在编译期执行\n",[133,178,180,182,184,188,191,194,198],{"class":135,"line":179},5,[133,181,5],{"class":146},[133,183,149],{"class":146},[133,185,187],{"class":186},"sScJk"," square",[133,189,190],{"class":152},"(",[133,192,193],{"class":146},"int",[133,195,197],{"class":196},"s4XuR"," n",[133,199,200],{"class":152},")\n",[133,202,204],{"class":135,"line":203},6,[133,205,206],{"class":152},"{\n",[133,208,210,213,216,219],{"class":135,"line":209},7,[133,211,212],{"class":146},"    return",[133,214,215],{"class":152}," n ",[133,217,218],{"class":146},"*",[133,220,221],{"class":152}," n;\n",[133,223,225],{"class":135,"line":224},8,[133,226,227],{"class":152},"}\n",[133,229,231],{"class":135,"line":230},9,[133,232,170],{"emptyLinePlaceholder":169},[133,234,236],{"class":135,"line":235},10,[133,237,238],{"class":139},"\u002F\u002F constexpr 变量可以用编译期函数初始化\n",[133,240,242,244,246,249,251,253,255,258,261],{"class":135,"line":241},11,[133,243,5],{"class":146},[133,245,149],{"class":146},[133,247,248],{"class":152}," val ",[133,250,156],{"class":146},[133,252,187],{"class":186},[133,254,190],{"class":152},[133,256,257],{"class":159},"5",[133,259,260],{"class":152},");",[133,262,263],{"class":139},"  \u002F\u002F 编译期计算\n",[133,265,267],{"class":135,"line":266},12,[133,268,170],{"emptyLinePlaceholder":169},[133,270,272],{"class":135,"line":271},13,[133,273,274],{"class":139},"\u002F\u002F C++20 consteval：必须在编译期执行（不能运行时调用）\n",[133,276,278,280,282,285,287,289,291],{"class":135,"line":277},14,[133,279,92],{"class":146},[133,281,149],{"class":146},[133,283,284],{"class":186}," cube",[133,286,190],{"class":152},[133,288,193],{"class":146},[133,290,197],{"class":196},[133,292,200],{"class":152},[133,294,296],{"class":135,"line":295},15,[133,297,206],{"class":152},[133,299,301,303,305,307,309,311],{"class":135,"line":300},16,[133,302,212],{"class":146},[133,304,215],{"class":152},[133,306,218],{"class":146},[133,308,215],{"class":152},[133,310,218],{"class":146},[133,312,221],{"class":152},[133,314,316],{"class":135,"line":315},17,[133,317,227],{"class":152},[10,319,321],{"id":320},"const-vs-constexpr","const vs constexpr",[39,323,324,336],{},[42,325,326],{},[45,327,328,331,334],{},[48,329,330],{"align":50},"aspect",[48,332,333],{"align":50},"const",[48,335,5],{"align":50},[56,337,338,349,360,371,382],{},[45,339,340,343,346],{},[61,341,342],{"align":50},"Meaning",[61,344,345],{"align":50},"Variable cannot be modified",[61,347,348],{"align":50},"Variables or functions can be evaluated at compile time.",[45,350,351,354,357],{},[61,352,353],{"align":50},"initialization",[61,355,356],{"align":50},"Can be initialized at runtime",[61,358,359],{"align":50},"Must be initialized at compile time.",[45,361,362,365,368],{},[61,363,364],{"align":50},"function",[61,366,367],{"align":50},"can only be applied to member functions",[61,369,370],{"align":50},"Functions can be executed at compile time.",[45,372,373,376,379],{},[61,374,375],{"align":50},"Usage",[61,377,378],{"align":50},"Prevent variables from being modified",[61,380,381],{"align":50},"Compile-time computation to improve efficiency",[45,383,384,387,389],{},[61,385,386],{"align":50},"Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[61,388],{"align":50},[61,390],{"align":50},[392,393],"hr",{},[15,395,396,399,400,399,403,399],{},[25,397,398],{},"Example","|",[21,401,402],{},"const int x = get_value();",[21,404,405],{},"constexpr int x = 5 * 3;",[10,407,409],{"id":408},"differences-between-constexpr-consteval-and-constinit","Differences between constexpr, consteval, and constinit",[15,411,412,413,415,416,418,419,422],{},"These three terms may seem related to \"constants,\" but they solve different problems. When starting out, master ",[21,414,5],{}," first, then move on to understanding C++20's ",[21,417,92],{}," and ",[21,420,421],{},"constinit",".",[39,424,425,437],{},[42,426,427],{},[45,428,429,432,434],{},[48,430,431],{"align":50},"Keywords",[48,433,342],{"align":50},[48,435,436],{"align":50},"Typical scenarios",[56,438,439,451,463],{},[45,440,441,445,448],{},[61,442,443],{"align":50},[21,444,5],{},[61,446,447],{"align":50},"It can be evaluated at compile-time or called at runtime.",[61,449,450],{"align":50},"Universal compile-time functions and constant expressions",[45,452,453,457,460],{},[61,454,455],{"align":50},[21,456,92],{},[61,458,459],{"align":50},"Must be evaluated at compile time",[61,461,462],{"align":50},"Generate compile-time IDs, compile-time verification",[45,464,465,469,472],{},[61,466,467],{"align":50},[21,468,421],{},[61,470,471],{"align":50},"Ensuring static objects are initialized at compile time, but the objects are not necessarily const.",[61,473,474],{"align":50},"Avoid issues with dynamic initialization order of global variables",[15,476,477,478,480,481,483,484,486],{},"A one-sentence distinction: ",[21,479,5],{}," leans toward \"whether it can be computed,\" ",[21,482,92],{}," leans toward \"must be computed now,\" ",[21,485,421],{}," leans toward \"initialization timing must be early.\"",[10,488,490],{"id":489},"example-code","Example code",[492,493,495],"h3",{"id":494},"example-1-constexpr-variablesmust-be-determined-at-compile-time","Example 1: constexpr variables—must be determined at compile time",[124,497,499],{"className":126,"code":498,"language":128,"meta":129,"style":129},"#include \u003Ciostream>\n\nint main()\n{\n    constexpr int size = 10;        \u002F\u002F 编译期常量\n    int arr[size];                  \u002F\u002F ✅ 可以用作数组大小\n\n    const int runtime_size = size;  \u002F\u002F const 可以用编译期常量初始化\n    int arr2[runtime_size];         \u002F\u002F ✅ 也可以用作数组大小（因为初始化值是 constexpr）\n\n    int n = 5;\n    \u002F\u002F constexpr int s2 = n;        \u002F\u002F ❌ n 是运行时变量，不能初始化 constexpr\n    const int s3 = n;               \u002F\u002F ✅ const 可以在运行时初始化\n    \u002F\u002F int arr3[s3];                \u002F\u002F ❌ s3 不是编译期常量，不能用作数组大小\n\n    std::cout \u003C\u003C \"size = \" \u003C\u003C size \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[21,500,501,510,514,524,528,548,559,563,581,591,595,608,616,633,641,645,677,681,691],{"__ignoreMap":129},[133,502,503,506],{"class":135,"line":136},[133,504,505],{"class":146},"#include",[133,507,509],{"class":508},"sZZnC"," \u003Ciostream>\n",[133,511,512],{"class":135,"line":143},[133,513,170],{"emptyLinePlaceholder":169},[133,515,516,518,521],{"class":135,"line":166},[133,517,193],{"class":146},[133,519,520],{"class":186}," main",[133,522,523],{"class":152},"()\n",[133,525,526],{"class":135,"line":173},[133,527,206],{"class":152},[133,529,530,533,535,537,539,542,545],{"class":135,"line":179},[133,531,532],{"class":146},"    constexpr",[133,534,149],{"class":146},[133,536,153],{"class":152},[133,538,156],{"class":146},[133,540,541],{"class":159}," 10",[133,543,544],{"class":152},";",[133,546,547],{"class":139},"        \u002F\u002F 编译期常量\n",[133,549,550,553,556],{"class":135,"line":203},[133,551,552],{"class":146},"    int",[133,554,555],{"class":152}," arr[size];",[133,557,558],{"class":139},"                  \u002F\u002F ✅ 可以用作数组大小\n",[133,560,561],{"class":135,"line":209},[133,562,170],{"emptyLinePlaceholder":169},[133,564,565,568,570,573,575,578],{"class":135,"line":224},[133,566,567],{"class":146},"    const",[133,569,149],{"class":146},[133,571,572],{"class":152}," runtime_size ",[133,574,156],{"class":146},[133,576,577],{"class":152}," size;",[133,579,580],{"class":139},"  \u002F\u002F const 可以用编译期常量初始化\n",[133,582,583,585,588],{"class":135,"line":230},[133,584,552],{"class":146},[133,586,587],{"class":152}," arr2[runtime_size];",[133,589,590],{"class":139},"         \u002F\u002F ✅ 也可以用作数组大小（因为初始化值是 constexpr）\n",[133,592,593],{"class":135,"line":235},[133,594,170],{"emptyLinePlaceholder":169},[133,596,597,599,601,603,606],{"class":135,"line":241},[133,598,552],{"class":146},[133,600,215],{"class":152},[133,602,156],{"class":146},[133,604,605],{"class":159}," 5",[133,607,163],{"class":152},[133,609,610,613],{"class":135,"line":266},[133,611,612],{"class":139},"    \u002F\u002F constexpr int s2 = n;",[133,614,615],{"class":139},"        \u002F\u002F ❌ n 是运行时变量，不能初始化 constexpr\n",[133,617,618,620,622,625,627,630],{"class":135,"line":271},[133,619,567],{"class":146},[133,621,149],{"class":146},[133,623,624],{"class":152}," s3 ",[133,626,156],{"class":146},[133,628,629],{"class":152}," n;",[133,631,632],{"class":139},"               \u002F\u002F ✅ const 可以在运行时初始化\n",[133,634,635,638],{"class":135,"line":277},[133,636,637],{"class":139},"    \u002F\u002F int arr3[s3];",[133,639,640],{"class":139},"                \u002F\u002F ❌ s3 不是编译期常量，不能用作数组大小\n",[133,642,643],{"class":135,"line":295},[133,644,170],{"emptyLinePlaceholder":169},[133,646,647,650,653,656,659,662,664,666,669,672,675],{"class":135,"line":300},[133,648,649],{"class":186},"    std",[133,651,652],{"class":152},"::cout ",[133,654,655],{"class":146},"\u003C\u003C",[133,657,658],{"class":508}," \"size = \"",[133,660,661],{"class":146}," \u003C\u003C",[133,663,153],{"class":152},[133,665,655],{"class":146},[133,667,668],{"class":508}," \"",[133,670,671],{"class":159},"\\n",[133,673,674],{"class":508},"\"",[133,676,163],{"class":152},[133,678,679],{"class":135,"line":315},[133,680,170],{"emptyLinePlaceholder":169},[133,682,684,686,689],{"class":135,"line":683},18,[133,685,212],{"class":146},[133,687,688],{"class":159}," 0",[133,690,163],{"class":152},[133,692,694],{"class":135,"line":693},19,[133,695,227],{"class":152},[15,697,698,701],{},[25,699,700],{},"Results","：",[124,703,708],{"className":704,"code":706,"language":707},[705],"language-text","size = 10\n","text",[21,709,706],{"__ignoreMap":129},[492,711,713],{"id":712},"example-2building-on-example-1constexpr-函数","Example 2：Building on Example 1，constexpr 函数",[124,715,717],{"className":126,"code":716,"language":128,"meta":129,"style":129},"#include \u003Ciostream>\n\n\u002F\u002F constexpr 函数：编译期可执行\nconstexpr int factorial(int n)\n{\n    int result = 1;\n    for (int i = 1; i \u003C= n; ++i)  \u002F\u002F C++14 起支持循环\n    {\n        result *= i;\n    }\n    return result;\n}\n\nint main()\n{\n    \u002F\u002F 编译期计算：factorial(5) 在编译时就得到 120\n    constexpr int f5 = factorial(5);\n    std::cout \u003C\u003C \"factorial(5) = \" \u003C\u003C f5 \u003C\u003C \"\\n\";\n\n    \u002F\u002F 也可运行时调用\n    int n;\n    std::cout \u003C\u003C \"Enter a number: \";\n    std::cin >> n;\n    std::cout \u003C\u003C \"factorial(\" \u003C\u003C n \u003C\u003C \") = \" \u003C\u003C factorial(n) \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[21,718,719,725,729,734,751,755,769,804,809,820,825,832,836,840,848,852,857,877,902,906,912,919,933,946,984,989,998],{"__ignoreMap":129},[133,720,721,723],{"class":135,"line":136},[133,722,505],{"class":146},[133,724,509],{"class":508},[133,726,727],{"class":135,"line":143},[133,728,170],{"emptyLinePlaceholder":169},[133,730,731],{"class":135,"line":166},[133,732,733],{"class":139},"\u002F\u002F constexpr 函数：编译期可执行\n",[133,735,736,738,740,743,745,747,749],{"class":135,"line":173},[133,737,5],{"class":146},[133,739,149],{"class":146},[133,741,742],{"class":186}," factorial",[133,744,190],{"class":152},[133,746,193],{"class":146},[133,748,197],{"class":196},[133,750,200],{"class":152},[133,752,753],{"class":135,"line":179},[133,754,206],{"class":152},[133,756,757,759,762,764,767],{"class":135,"line":203},[133,758,552],{"class":146},[133,760,761],{"class":152}," result ",[133,763,156],{"class":146},[133,765,766],{"class":159}," 1",[133,768,163],{"class":152},[133,770,771,774,777,779,782,784,786,789,792,795,798,801],{"class":135,"line":209},[133,772,773],{"class":146},"    for",[133,775,776],{"class":152}," (",[133,778,193],{"class":146},[133,780,781],{"class":152}," i ",[133,783,156],{"class":146},[133,785,766],{"class":159},[133,787,788],{"class":152},"; i ",[133,790,791],{"class":146},"\u003C=",[133,793,794],{"class":152}," n; ",[133,796,797],{"class":146},"++",[133,799,800],{"class":152},"i)",[133,802,803],{"class":139},"  \u002F\u002F C++14 起支持循环\n",[133,805,806],{"class":135,"line":224},[133,807,808],{"class":152},"    {\n",[133,810,811,814,817],{"class":135,"line":230},[133,812,813],{"class":152},"        result ",[133,815,816],{"class":146},"*=",[133,818,819],{"class":152}," i;\n",[133,821,822],{"class":135,"line":235},[133,823,824],{"class":152},"    }\n",[133,826,827,829],{"class":135,"line":241},[133,828,212],{"class":146},[133,830,831],{"class":152}," result;\n",[133,833,834],{"class":135,"line":266},[133,835,227],{"class":152},[133,837,838],{"class":135,"line":271},[133,839,170],{"emptyLinePlaceholder":169},[133,841,842,844,846],{"class":135,"line":277},[133,843,193],{"class":146},[133,845,520],{"class":186},[133,847,523],{"class":152},[133,849,850],{"class":135,"line":295},[133,851,206],{"class":152},[133,853,854],{"class":135,"line":300},[133,855,856],{"class":139},"    \u002F\u002F 编译期计算：factorial(5) 在编译时就得到 120\n",[133,858,859,861,863,866,868,870,872,874],{"class":135,"line":315},[133,860,532],{"class":146},[133,862,149],{"class":146},[133,864,865],{"class":152}," f5 ",[133,867,156],{"class":146},[133,869,742],{"class":186},[133,871,190],{"class":152},[133,873,257],{"class":159},[133,875,876],{"class":152},");\n",[133,878,879,881,883,885,888,890,892,894,896,898,900],{"class":135,"line":683},[133,880,649],{"class":186},[133,882,652],{"class":152},[133,884,655],{"class":146},[133,886,887],{"class":508}," \"factorial(5) = \"",[133,889,661],{"class":146},[133,891,865],{"class":152},[133,893,655],{"class":146},[133,895,668],{"class":508},[133,897,671],{"class":159},[133,899,674],{"class":508},[133,901,163],{"class":152},[133,903,904],{"class":135,"line":693},[133,905,170],{"emptyLinePlaceholder":169},[133,907,909],{"class":135,"line":908},20,[133,910,911],{"class":139},"    \u002F\u002F 也可运行时调用\n",[133,913,915,917],{"class":135,"line":914},21,[133,916,552],{"class":146},[133,918,221],{"class":152},[133,920,922,924,926,928,931],{"class":135,"line":921},22,[133,923,649],{"class":186},[133,925,652],{"class":152},[133,927,655],{"class":146},[133,929,930],{"class":508}," \"Enter a number: \"",[133,932,163],{"class":152},[133,934,936,938,941,944],{"class":135,"line":935},23,[133,937,649],{"class":186},[133,939,940],{"class":152},"::cin ",[133,942,943],{"class":146},">>",[133,945,221],{"class":152},[133,947,949,951,953,955,958,960,962,964,967,969,971,974,976,978,980,982],{"class":135,"line":948},24,[133,950,649],{"class":186},[133,952,652],{"class":152},[133,954,655],{"class":146},[133,956,957],{"class":508}," \"factorial(\"",[133,959,661],{"class":146},[133,961,215],{"class":152},[133,963,655],{"class":146},[133,965,966],{"class":508}," \") = \"",[133,968,661],{"class":146},[133,970,742],{"class":186},[133,972,973],{"class":152},"(n) ",[133,975,655],{"class":146},[133,977,668],{"class":508},[133,979,671],{"class":159},[133,981,674],{"class":508},[133,983,163],{"class":152},[133,985,987],{"class":135,"line":986},25,[133,988,170],{"emptyLinePlaceholder":169},[133,990,992,994,996],{"class":135,"line":991},26,[133,993,212],{"class":146},[133,995,688],{"class":159},[133,997,163],{"class":152},[133,999,1001],{"class":135,"line":1000},27,[133,1002,227],{"class":152},[15,1004,1005,701],{},[25,1006,700],{},[124,1008,1011],{"className":1009,"code":1010,"language":707},[705],"factorial(5) = 120\nEnter a number: 4\nfactorial(4) = 24\n",[21,1012,1010],{"__ignoreMap":129},[492,1014,1016],{"id":1015},"example-3-building-on-example-2-constexpr-for-templates-and-compile-time-checks","Example 3: Building on Example 2, constexpr for templates and compile-time checks",[124,1018,1020],{"className":126,"code":1019,"language":128,"meta":129,"style":129},"#include \u003Ciostream>\n\n\u002F\u002F constexpr 函数：编译期判断是否为质数\nconstexpr bool is_prime(int n)\n{\n    if (n \u003C= 1) return false;\n    for (int i = 2; i * i \u003C= n; ++i)\n    {\n        if (n % i == 0) return false;\n    }\n    return true;\n}\n\n\u002F\u002F 编译期静态断言\nstatic_assert(is_prime(2), \"2 is prime\");\nstatic_assert(is_prime(7), \"7 is prime\");\nstatic_assert(!is_prime(9), \"9 is NOT prime\");\n\n\u002F\u002F 编译期生成质数数组\nconstexpr int get_nth_prime(int n)\n{\n    int count = 0;\n    int num = 1;\n    while (count \u003C n)\n    {\n        ++num;\n        if (is_prime(num))\n        {\n            ++count;\n        }\n    }\n    return num;\n}\n\nint main()\n{\n    constexpr int primes[] = {\n        get_nth_prime(1),  \u002F\u002F 2\n        get_nth_prime(2),  \u002F\u002F 3\n        get_nth_prime(3),  \u002F\u002F 5\n        get_nth_prime(4),  \u002F\u002F 7\n        get_nth_prime(5)   \u002F\u002F 11\n    };\n\n    std::cout \u003C\u003C \"First 5 primes: \";\n    for (int p : primes)\n    {\n        std::cout \u003C\u003C p \u003C\u003C \" \";\n    }\n    std::cout \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[21,1021,1022,1028,1032,1037,1055,1059,1082,1112,1116,1141,1145,1154,1158,1162,1167,1190,1210,1233,1237,1242,1259,1263,1276,1289,1303,1307,1315,1326,1332,1341,1347,1352,1360,1365,1370,1379,1384,1399,1416,1430,1445,1460,1475,1481,1486,1500,1512,1517,1537,1542,1559,1564,1573],{"__ignoreMap":129},[133,1023,1024,1026],{"class":135,"line":136},[133,1025,505],{"class":146},[133,1027,509],{"class":508},[133,1029,1030],{"class":135,"line":143},[133,1031,170],{"emptyLinePlaceholder":169},[133,1033,1034],{"class":135,"line":166},[133,1035,1036],{"class":139},"\u002F\u002F constexpr 函数：编译期判断是否为质数\n",[133,1038,1039,1041,1044,1047,1049,1051,1053],{"class":135,"line":173},[133,1040,5],{"class":146},[133,1042,1043],{"class":146}," bool",[133,1045,1046],{"class":186}," is_prime",[133,1048,190],{"class":152},[133,1050,193],{"class":146},[133,1052,197],{"class":196},[133,1054,200],{"class":152},[133,1056,1057],{"class":135,"line":179},[133,1058,206],{"class":152},[133,1060,1061,1064,1067,1069,1071,1074,1077,1080],{"class":135,"line":203},[133,1062,1063],{"class":146},"    if",[133,1065,1066],{"class":152}," (n ",[133,1068,791],{"class":146},[133,1070,766],{"class":159},[133,1072,1073],{"class":152},") ",[133,1075,1076],{"class":146},"return",[133,1078,1079],{"class":159}," false",[133,1081,163],{"class":152},[133,1083,1084,1086,1088,1090,1092,1094,1097,1099,1101,1103,1105,1107,1109],{"class":135,"line":209},[133,1085,773],{"class":146},[133,1087,776],{"class":152},[133,1089,193],{"class":146},[133,1091,781],{"class":152},[133,1093,156],{"class":146},[133,1095,1096],{"class":159}," 2",[133,1098,788],{"class":152},[133,1100,218],{"class":146},[133,1102,781],{"class":152},[133,1104,791],{"class":146},[133,1106,794],{"class":152},[133,1108,797],{"class":146},[133,1110,1111],{"class":152},"i)\n",[133,1113,1114],{"class":135,"line":224},[133,1115,808],{"class":152},[133,1117,1118,1121,1123,1126,1128,1131,1133,1135,1137,1139],{"class":135,"line":230},[133,1119,1120],{"class":146},"        if",[133,1122,1066],{"class":152},[133,1124,1125],{"class":146},"%",[133,1127,781],{"class":152},[133,1129,1130],{"class":146},"==",[133,1132,688],{"class":159},[133,1134,1073],{"class":152},[133,1136,1076],{"class":146},[133,1138,1079],{"class":159},[133,1140,163],{"class":152},[133,1142,1143],{"class":135,"line":235},[133,1144,824],{"class":152},[133,1146,1147,1149,1152],{"class":135,"line":241},[133,1148,212],{"class":146},[133,1150,1151],{"class":159}," true",[133,1153,163],{"class":152},[133,1155,1156],{"class":135,"line":266},[133,1157,227],{"class":152},[133,1159,1160],{"class":135,"line":271},[133,1161,170],{"emptyLinePlaceholder":169},[133,1163,1164],{"class":135,"line":277},[133,1165,1166],{"class":139},"\u002F\u002F 编译期静态断言\n",[133,1168,1169,1172,1174,1177,1179,1182,1185,1188],{"class":135,"line":295},[133,1170,1171],{"class":146},"static_assert",[133,1173,190],{"class":152},[133,1175,1176],{"class":186},"is_prime",[133,1178,190],{"class":152},[133,1180,1181],{"class":159},"2",[133,1183,1184],{"class":152},"), ",[133,1186,1187],{"class":508},"\"2 is prime\"",[133,1189,876],{"class":152},[133,1191,1192,1194,1196,1198,1200,1203,1205,1208],{"class":135,"line":300},[133,1193,1171],{"class":146},[133,1195,190],{"class":152},[133,1197,1176],{"class":186},[133,1199,190],{"class":152},[133,1201,1202],{"class":159},"7",[133,1204,1184],{"class":152},[133,1206,1207],{"class":508},"\"7 is prime\"",[133,1209,876],{"class":152},[133,1211,1212,1214,1216,1219,1221,1223,1226,1228,1231],{"class":135,"line":315},[133,1213,1171],{"class":146},[133,1215,190],{"class":152},[133,1217,1218],{"class":146},"!",[133,1220,1176],{"class":186},[133,1222,190],{"class":152},[133,1224,1225],{"class":159},"9",[133,1227,1184],{"class":152},[133,1229,1230],{"class":508},"\"9 is NOT prime\"",[133,1232,876],{"class":152},[133,1234,1235],{"class":135,"line":683},[133,1236,170],{"emptyLinePlaceholder":169},[133,1238,1239],{"class":135,"line":693},[133,1240,1241],{"class":139},"\u002F\u002F 编译期生成质数数组\n",[133,1243,1244,1246,1248,1251,1253,1255,1257],{"class":135,"line":908},[133,1245,5],{"class":146},[133,1247,149],{"class":146},[133,1249,1250],{"class":186}," get_nth_prime",[133,1252,190],{"class":152},[133,1254,193],{"class":146},[133,1256,197],{"class":196},[133,1258,200],{"class":152},[133,1260,1261],{"class":135,"line":914},[133,1262,206],{"class":152},[133,1264,1265,1267,1270,1272,1274],{"class":135,"line":921},[133,1266,552],{"class":146},[133,1268,1269],{"class":152}," count ",[133,1271,156],{"class":146},[133,1273,688],{"class":159},[133,1275,163],{"class":152},[133,1277,1278,1280,1283,1285,1287],{"class":135,"line":935},[133,1279,552],{"class":146},[133,1281,1282],{"class":152}," num ",[133,1284,156],{"class":146},[133,1286,766],{"class":159},[133,1288,163],{"class":152},[133,1290,1291,1294,1297,1300],{"class":135,"line":948},[133,1292,1293],{"class":146},"    while",[133,1295,1296],{"class":152}," (count ",[133,1298,1299],{"class":146},"\u003C",[133,1301,1302],{"class":152}," n)\n",[133,1304,1305],{"class":135,"line":986},[133,1306,808],{"class":152},[133,1308,1309,1312],{"class":135,"line":991},[133,1310,1311],{"class":146},"        ++",[133,1313,1314],{"class":152},"num;\n",[133,1316,1317,1319,1321,1323],{"class":135,"line":1000},[133,1318,1120],{"class":146},[133,1320,776],{"class":152},[133,1322,1176],{"class":186},[133,1324,1325],{"class":152},"(num))\n",[133,1327,1329],{"class":135,"line":1328},28,[133,1330,1331],{"class":152},"        {\n",[133,1333,1335,1338],{"class":135,"line":1334},29,[133,1336,1337],{"class":146},"            ++",[133,1339,1340],{"class":152},"count;\n",[133,1342,1344],{"class":135,"line":1343},30,[133,1345,1346],{"class":152},"        }\n",[133,1348,1350],{"class":135,"line":1349},31,[133,1351,824],{"class":152},[133,1353,1355,1357],{"class":135,"line":1354},32,[133,1356,212],{"class":146},[133,1358,1359],{"class":152}," num;\n",[133,1361,1363],{"class":135,"line":1362},33,[133,1364,227],{"class":152},[133,1366,1368],{"class":135,"line":1367},34,[133,1369,170],{"emptyLinePlaceholder":169},[133,1371,1373,1375,1377],{"class":135,"line":1372},35,[133,1374,193],{"class":146},[133,1376,520],{"class":186},[133,1378,523],{"class":152},[133,1380,1382],{"class":135,"line":1381},36,[133,1383,206],{"class":152},[133,1385,1387,1389,1391,1394,1396],{"class":135,"line":1386},37,[133,1388,532],{"class":146},[133,1390,149],{"class":146},[133,1392,1393],{"class":152}," primes[] ",[133,1395,156],{"class":146},[133,1397,1398],{"class":152}," {\n",[133,1400,1402,1405,1407,1410,1413],{"class":135,"line":1401},38,[133,1403,1404],{"class":186},"        get_nth_prime",[133,1406,190],{"class":152},[133,1408,1409],{"class":159},"1",[133,1411,1412],{"class":152},"),",[133,1414,1415],{"class":139},"  \u002F\u002F 2\n",[133,1417,1419,1421,1423,1425,1427],{"class":135,"line":1418},39,[133,1420,1404],{"class":186},[133,1422,190],{"class":152},[133,1424,1181],{"class":159},[133,1426,1412],{"class":152},[133,1428,1429],{"class":139},"  \u002F\u002F 3\n",[133,1431,1433,1435,1437,1440,1442],{"class":135,"line":1432},40,[133,1434,1404],{"class":186},[133,1436,190],{"class":152},[133,1438,1439],{"class":159},"3",[133,1441,1412],{"class":152},[133,1443,1444],{"class":139},"  \u002F\u002F 5\n",[133,1446,1448,1450,1452,1455,1457],{"class":135,"line":1447},41,[133,1449,1404],{"class":186},[133,1451,190],{"class":152},[133,1453,1454],{"class":159},"4",[133,1456,1412],{"class":152},[133,1458,1459],{"class":139},"  \u002F\u002F 7\n",[133,1461,1463,1465,1467,1469,1472],{"class":135,"line":1462},42,[133,1464,1404],{"class":186},[133,1466,190],{"class":152},[133,1468,257],{"class":159},[133,1470,1471],{"class":152},")",[133,1473,1474],{"class":139},"   \u002F\u002F 11\n",[133,1476,1478],{"class":135,"line":1477},43,[133,1479,1480],{"class":152},"    };\n",[133,1482,1484],{"class":135,"line":1483},44,[133,1485,170],{"emptyLinePlaceholder":169},[133,1487,1489,1491,1493,1495,1498],{"class":135,"line":1488},45,[133,1490,649],{"class":186},[133,1492,652],{"class":152},[133,1494,655],{"class":146},[133,1496,1497],{"class":508}," \"First 5 primes: \"",[133,1499,163],{"class":152},[133,1501,1503,1505,1507,1509],{"class":135,"line":1502},46,[133,1504,773],{"class":146},[133,1506,776],{"class":152},[133,1508,193],{"class":146},[133,1510,1511],{"class":152}," p : primes)\n",[133,1513,1515],{"class":135,"line":1514},47,[133,1516,808],{"class":152},[133,1518,1520,1523,1525,1527,1530,1532,1535],{"class":135,"line":1519},48,[133,1521,1522],{"class":186},"        std",[133,1524,652],{"class":152},[133,1526,655],{"class":146},[133,1528,1529],{"class":152}," p ",[133,1531,655],{"class":146},[133,1533,1534],{"class":508}," \" \"",[133,1536,163],{"class":152},[133,1538,1540],{"class":135,"line":1539},49,[133,1541,824],{"class":152},[133,1543,1545,1547,1549,1551,1553,1555,1557],{"class":135,"line":1544},50,[133,1546,649],{"class":186},[133,1548,652],{"class":152},[133,1550,655],{"class":146},[133,1552,668],{"class":508},[133,1554,671],{"class":159},[133,1556,674],{"class":508},[133,1558,163],{"class":152},[133,1560,1562],{"class":135,"line":1561},51,[133,1563,170],{"emptyLinePlaceholder":169},[133,1565,1567,1569,1571],{"class":135,"line":1566},52,[133,1568,212],{"class":146},[133,1570,688],{"class":159},[133,1572,163],{"class":152},[133,1574,1576],{"class":135,"line":1575},53,[133,1577,227],{"class":152},[15,1579,1580,701],{},[25,1581,700],{},[124,1583,1586],{"className":1584,"code":1585,"language":707},[705],"First 5 primes: 2 3 5 7 11 \n",[21,1587,1585],{"__ignoreMap":129},[492,1589,1591],{"id":1590},"example-4-c17-constexpr-lambda","Example 4: C++17 constexpr lambda",[124,1593,1595],{"className":126,"code":1594,"language":128,"meta":129,"style":129},"#include \u003Ciostream>\n\nint main()\n{\n    \u002F\u002F constexpr lambda：编译期可调用\n    constexpr auto square = [](int x) constexpr {\n        return x * x;\n    };\n\n    constexpr int result = square(5);  \u002F\u002F 编译期计算\n    std::cout \u003C\u003C \"square(5) = \" \u003C\u003C result \u003C\u003C \"\\n\";\n\n    \u002F\u002F constexpr lambda 也可运行时调用\n    int n = 7;\n    std::cout \u003C\u003C \"square(\" \u003C\u003C n \u003C\u003C \") = \" \u003C\u003C square(n) \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[21,1596,1597,1603,1607,1615,1619,1624,1650,1663,1667,1671,1691,1716,1720,1725,1738,1773,1777,1785],{"__ignoreMap":129},[133,1598,1599,1601],{"class":135,"line":136},[133,1600,505],{"class":146},[133,1602,509],{"class":508},[133,1604,1605],{"class":135,"line":143},[133,1606,170],{"emptyLinePlaceholder":169},[133,1608,1609,1611,1613],{"class":135,"line":166},[133,1610,193],{"class":146},[133,1612,520],{"class":186},[133,1614,523],{"class":152},[133,1616,1617],{"class":135,"line":173},[133,1618,206],{"class":152},[133,1620,1621],{"class":135,"line":179},[133,1622,1623],{"class":139},"    \u002F\u002F constexpr lambda：编译期可调用\n",[133,1625,1626,1628,1631,1634,1636,1639,1641,1644,1646,1648],{"class":135,"line":203},[133,1627,532],{"class":146},[133,1629,1630],{"class":146}," auto",[133,1632,1633],{"class":152}," square ",[133,1635,156],{"class":146},[133,1637,1638],{"class":152}," [](",[133,1640,193],{"class":146},[133,1642,1643],{"class":196}," x",[133,1645,1073],{"class":152},[133,1647,5],{"class":146},[133,1649,1398],{"class":152},[133,1651,1652,1655,1658,1660],{"class":135,"line":209},[133,1653,1654],{"class":146},"        return",[133,1656,1657],{"class":152}," x ",[133,1659,218],{"class":146},[133,1661,1662],{"class":152}," x;\n",[133,1664,1665],{"class":135,"line":224},[133,1666,1480],{"class":152},[133,1668,1669],{"class":135,"line":230},[133,1670,170],{"emptyLinePlaceholder":169},[133,1672,1673,1675,1677,1679,1681,1683,1685,1687,1689],{"class":135,"line":235},[133,1674,532],{"class":146},[133,1676,149],{"class":146},[133,1678,761],{"class":152},[133,1680,156],{"class":146},[133,1682,187],{"class":186},[133,1684,190],{"class":152},[133,1686,257],{"class":159},[133,1688,260],{"class":152},[133,1690,263],{"class":139},[133,1692,1693,1695,1697,1699,1702,1704,1706,1708,1710,1712,1714],{"class":135,"line":241},[133,1694,649],{"class":186},[133,1696,652],{"class":152},[133,1698,655],{"class":146},[133,1700,1701],{"class":508}," \"square(5) = \"",[133,1703,661],{"class":146},[133,1705,761],{"class":152},[133,1707,655],{"class":146},[133,1709,668],{"class":508},[133,1711,671],{"class":159},[133,1713,674],{"class":508},[133,1715,163],{"class":152},[133,1717,1718],{"class":135,"line":266},[133,1719,170],{"emptyLinePlaceholder":169},[133,1721,1722],{"class":135,"line":271},[133,1723,1724],{"class":139},"    \u002F\u002F constexpr lambda 也可运行时调用\n",[133,1726,1727,1729,1731,1733,1736],{"class":135,"line":277},[133,1728,552],{"class":146},[133,1730,215],{"class":152},[133,1732,156],{"class":146},[133,1734,1735],{"class":159}," 7",[133,1737,163],{"class":152},[133,1739,1740,1742,1744,1746,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771],{"class":135,"line":295},[133,1741,649],{"class":186},[133,1743,652],{"class":152},[133,1745,655],{"class":146},[133,1747,1748],{"class":508}," \"square(\"",[133,1750,661],{"class":146},[133,1752,215],{"class":152},[133,1754,655],{"class":146},[133,1756,966],{"class":508},[133,1758,661],{"class":146},[133,1760,187],{"class":186},[133,1762,973],{"class":152},[133,1764,655],{"class":146},[133,1766,668],{"class":508},[133,1768,671],{"class":159},[133,1770,674],{"class":508},[133,1772,163],{"class":152},[133,1774,1775],{"class":135,"line":300},[133,1776,170],{"emptyLinePlaceholder":169},[133,1778,1779,1781,1783],{"class":135,"line":315},[133,1780,212],{"class":146},[133,1782,688],{"class":159},[133,1784,163],{"class":152},[133,1786,1787],{"class":135,"line":683},[133,1788,227],{"class":152},[15,1790,1791,701],{},[25,1792,700],{},[124,1794,1797],{"className":1795,"code":1796,"language":707},[705],"square(5) = 25\nsquare(7) = 49\n",[21,1798,1796],{"__ignoreMap":129},[492,1800,1802],{"id":1801},"example-5-building-on-example-4-constexpr-can-be-called-at-runtime-whereas-consteval-cannot","Example 5: Building on Example 4, constexpr can be called at runtime, whereas consteval cannot.",[124,1804,1806],{"className":126,"code":1805,"language":128,"meta":129,"style":129},"#include \u003Ciostream>\n\nconstexpr int square(int x)\n{\n    return x * x;\n}\n\nconsteval int compile_time_square(int x)\n{\n    return x * x;\n}\n\nint main()\n{\n    constexpr int a = square(5);              \u002F\u002F 编译期计算\n    int n = 7;\n    int b = square(n);                        \u002F\u002F 运行期调用，也允许\n\n    constexpr int c = compile_time_square(6); \u002F\u002F 必须编译期计算\n    \u002F\u002F int d = compile_time_square(n);        \u002F\u002F ❌ 编译错误：n 不是编译期常量\n\n    std::cout \u003C\u003C \"a = \" \u003C\u003C a \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"b = \" \u003C\u003C b \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"c = \" \u003C\u003C c \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[21,1807,1808,1814,1818,1834,1838,1848,1852,1856,1873,1877,1887,1891,1895,1903,1907,1929,1941,1958,1962,1985,1993,1997,2022,2047,2072,2076,2084],{"__ignoreMap":129},[133,1809,1810,1812],{"class":135,"line":136},[133,1811,505],{"class":146},[133,1813,509],{"class":508},[133,1815,1816],{"class":135,"line":143},[133,1817,170],{"emptyLinePlaceholder":169},[133,1819,1820,1822,1824,1826,1828,1830,1832],{"class":135,"line":166},[133,1821,5],{"class":146},[133,1823,149],{"class":146},[133,1825,187],{"class":186},[133,1827,190],{"class":152},[133,1829,193],{"class":146},[133,1831,1643],{"class":196},[133,1833,200],{"class":152},[133,1835,1836],{"class":135,"line":173},[133,1837,206],{"class":152},[133,1839,1840,1842,1844,1846],{"class":135,"line":179},[133,1841,212],{"class":146},[133,1843,1657],{"class":152},[133,1845,218],{"class":146},[133,1847,1662],{"class":152},[133,1849,1850],{"class":135,"line":203},[133,1851,227],{"class":152},[133,1853,1854],{"class":135,"line":209},[133,1855,170],{"emptyLinePlaceholder":169},[133,1857,1858,1860,1862,1865,1867,1869,1871],{"class":135,"line":224},[133,1859,92],{"class":146},[133,1861,149],{"class":146},[133,1863,1864],{"class":186}," compile_time_square",[133,1866,190],{"class":152},[133,1868,193],{"class":146},[133,1870,1643],{"class":196},[133,1872,200],{"class":152},[133,1874,1875],{"class":135,"line":230},[133,1876,206],{"class":152},[133,1878,1879,1881,1883,1885],{"class":135,"line":235},[133,1880,212],{"class":146},[133,1882,1657],{"class":152},[133,1884,218],{"class":146},[133,1886,1662],{"class":152},[133,1888,1889],{"class":135,"line":241},[133,1890,227],{"class":152},[133,1892,1893],{"class":135,"line":266},[133,1894,170],{"emptyLinePlaceholder":169},[133,1896,1897,1899,1901],{"class":135,"line":271},[133,1898,193],{"class":146},[133,1900,520],{"class":186},[133,1902,523],{"class":152},[133,1904,1905],{"class":135,"line":277},[133,1906,206],{"class":152},[133,1908,1909,1911,1913,1916,1918,1920,1922,1924,1926],{"class":135,"line":295},[133,1910,532],{"class":146},[133,1912,149],{"class":146},[133,1914,1915],{"class":152}," a ",[133,1917,156],{"class":146},[133,1919,187],{"class":186},[133,1921,190],{"class":152},[133,1923,257],{"class":159},[133,1925,260],{"class":152},[133,1927,1928],{"class":139},"              \u002F\u002F 编译期计算\n",[133,1930,1931,1933,1935,1937,1939],{"class":135,"line":300},[133,1932,552],{"class":146},[133,1934,215],{"class":152},[133,1936,156],{"class":146},[133,1938,1735],{"class":159},[133,1940,163],{"class":152},[133,1942,1943,1945,1948,1950,1952,1955],{"class":135,"line":315},[133,1944,552],{"class":146},[133,1946,1947],{"class":152}," b ",[133,1949,156],{"class":146},[133,1951,187],{"class":186},[133,1953,1954],{"class":152},"(n);",[133,1956,1957],{"class":139},"                        \u002F\u002F 运行期调用，也允许\n",[133,1959,1960],{"class":135,"line":683},[133,1961,170],{"emptyLinePlaceholder":169},[133,1963,1964,1966,1968,1971,1973,1975,1977,1980,1982],{"class":135,"line":693},[133,1965,532],{"class":146},[133,1967,149],{"class":146},[133,1969,1970],{"class":152}," c ",[133,1972,156],{"class":146},[133,1974,1864],{"class":186},[133,1976,190],{"class":152},[133,1978,1979],{"class":159},"6",[133,1981,260],{"class":152},[133,1983,1984],{"class":139}," \u002F\u002F 必须编译期计算\n",[133,1986,1987,1990],{"class":135,"line":908},[133,1988,1989],{"class":139},"    \u002F\u002F int d = compile_time_square(n);",[133,1991,1992],{"class":139},"        \u002F\u002F ❌ 编译错误：n 不是编译期常量\n",[133,1994,1995],{"class":135,"line":914},[133,1996,170],{"emptyLinePlaceholder":169},[133,1998,1999,2001,2003,2005,2008,2010,2012,2014,2016,2018,2020],{"class":135,"line":921},[133,2000,649],{"class":186},[133,2002,652],{"class":152},[133,2004,655],{"class":146},[133,2006,2007],{"class":508}," \"a = \"",[133,2009,661],{"class":146},[133,2011,1915],{"class":152},[133,2013,655],{"class":146},[133,2015,668],{"class":508},[133,2017,671],{"class":159},[133,2019,674],{"class":508},[133,2021,163],{"class":152},[133,2023,2024,2026,2028,2030,2033,2035,2037,2039,2041,2043,2045],{"class":135,"line":935},[133,2025,649],{"class":186},[133,2027,652],{"class":152},[133,2029,655],{"class":146},[133,2031,2032],{"class":508}," \"b = \"",[133,2034,661],{"class":146},[133,2036,1947],{"class":152},[133,2038,655],{"class":146},[133,2040,668],{"class":508},[133,2042,671],{"class":159},[133,2044,674],{"class":508},[133,2046,163],{"class":152},[133,2048,2049,2051,2053,2055,2058,2060,2062,2064,2066,2068,2070],{"class":135,"line":948},[133,2050,649],{"class":186},[133,2052,652],{"class":152},[133,2054,655],{"class":146},[133,2056,2057],{"class":508}," \"c = \"",[133,2059,661],{"class":146},[133,2061,1970],{"class":152},[133,2063,655],{"class":146},[133,2065,668],{"class":508},[133,2067,671],{"class":159},[133,2069,674],{"class":508},[133,2071,163],{"class":152},[133,2073,2074],{"class":135,"line":986},[133,2075,170],{"emptyLinePlaceholder":169},[133,2077,2078,2080,2082],{"class":135,"line":991},[133,2079,212],{"class":146},[133,2081,688],{"class":159},[133,2083,163],{"class":152},[133,2085,2086],{"class":135,"line":1000},[133,2087,227],{"class":152},[15,2089,2090,701],{},[25,2091,700],{},[124,2093,2096],{"className":2094,"code":2095,"language":707},[705],"a = 25\nb = 49\nc = 36\n",[21,2097,2095],{"__ignoreMap":129},[10,2099,2101],{"id":2100},"runtime-results","runtime results",[15,2103,2104],{},"See the \"running results\" for each example above.",[10,2106,2108],{"id":2107},"key-syntax-explanation-in-the-example","Key syntax explanation in the example",[15,2110,2111],{},"|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[392,2113],{},[39,2115,2116,2136],{},[42,2117,2118],{},[45,2119,2120,2124,2127,2130,2133],{},[48,2121,2122],{"align":50},[25,2123,398],{},[48,2125,2126],{"align":50},"Discusses what",[48,2128,2129],{"align":50},"Newly emerged syntax",[48,2131,2132],{"align":50},"Why write it this way",[48,2134,2135],{"align":50},"Precautions",[56,2137,2138,2158,2175,2197,2215],{},[45,2139,2140,2143,2146,2152,2155],{},[61,2141,2142],{"align":50},"Example 1",[61,2144,2145],{"align":50},"constexpr vs const",[61,2147,2148,2151],{"align":50},[21,2149,2150],{},"constexpr int size = 10;",", array size",[61,2153,2154],{"align":50},"constexpr must be initialized at compile time and can be used as array size.",[61,2156,2157],{"align":50},"A const can be initialized at runtime, but it is not guaranteed to be determined at compile time.",[45,2159,2160,2163,2166,2169,2172],{},[61,2161,2162],{"align":50},"Example 2",[61,2164,2165],{"align":50},"constexpr functions",[61,2167,2168],{"align":50},"loops in constexpr functions",[61,2170,2171],{"align":50},"The same function can be invoked both at compile time and at runtime.",[61,2173,2174],{"align":50},"All parameters must also be compile-time constants when called at compile time.",[45,2176,2177,2180,2183,2188,2191],{},[61,2178,2179],{"align":50},"Example 3",[61,2181,2182],{"align":50},"constexpr used for static_assert",[61,2184,2185],{"align":50},[21,2186,2187],{},"static_assert()",[61,2189,2190],{"align":50},"Compile-time checks directly fail the compilation.",[61,2192,2193,2194,2196],{"align":50},"The parameters for ",[21,2195,1171],{}," must be compile-time constants.",[45,2198,2199,2202,2204,2209,2212],{},[61,2200,2201],{"align":50},"Example 4",[61,2203,82],{"align":50},[61,2205,2206],{"align":50},[21,2207,2208],{},"constexpr auto f = [](int x) constexpr {...};",[61,2210,2211],{"align":50},"Lambdas can also be evaluated at compile time.",[61,2213,2214],{"align":50},"Supported since C++17, both constexpr keywords need to be written.",[45,2216,2217,2220,2223,2227,2230],{},[61,2218,2219],{"align":50},"Example 5",[61,2221,2222],{"align":50},"constexpr vs consteval",[61,2224,2225],{"align":50},[21,2226,92],{},[61,2228,2229],{"align":50},"consteval functions can only be called at compile time.",[61,2231,2232],{"align":50},"Only available in C++20",[10,2234,2236],{"id":2235},"common-errors","Common Errors",[15,2238,2239],{},[25,2240,2241],{},"Error 1: Assigning a runtime variable to constexpr",[124,2243,2245],{"className":126,"code":2244,"language":128,"meta":129,"style":129},"int n = 5;\nconstexpr int x = n;  \u002F\u002F ❌ n 不是编译期常量\n",[21,2246,2247,2259],{"__ignoreMap":129},[133,2248,2249,2251,2253,2255,2257],{"class":135,"line":136},[133,2250,193],{"class":146},[133,2252,215],{"class":152},[133,2254,156],{"class":146},[133,2256,605],{"class":159},[133,2258,163],{"class":152},[133,2260,2261,2263,2265,2267,2269,2271],{"class":135,"line":143},[133,2262,5],{"class":146},[133,2264,149],{"class":146},[133,2266,1657],{"class":152},[133,2268,156],{"class":146},[133,2270,629],{"class":152},[133,2272,2273],{"class":139},"  \u002F\u002F ❌ n 不是编译期常量\n",[15,2275,2276,2277,2280,2281,2283,2284,2286],{},"The correct approach: ",[21,2278,2279],{},"const int x = n;"," (using ",[21,2282,333],{}," instead of ",[21,2285,5],{},").",[15,2288,2289],{},[25,2290,2291],{},"Error 2: constexpr functions assume all cases can be evaluated at compile time",[124,2293,2295],{"className":126,"code":2294,"language":128,"meta":129,"style":129},"constexpr int divide(int a, int b)\n{\n    return a \u002F b;  \u002F\u002F 编译期 b=0 会导致编译错误\n}\nconstexpr int x = divide(10, 0);  \u002F\u002F ❌ 编译错误！\n",[21,2296,2297,2323,2327,2342,2346],{"__ignoreMap":129},[133,2298,2299,2301,2303,2306,2308,2310,2313,2316,2318,2321],{"class":135,"line":136},[133,2300,5],{"class":146},[133,2302,149],{"class":146},[133,2304,2305],{"class":186}," divide",[133,2307,190],{"class":152},[133,2309,193],{"class":146},[133,2311,2312],{"class":196}," a",[133,2314,2315],{"class":152},", ",[133,2317,193],{"class":146},[133,2319,2320],{"class":196}," b",[133,2322,200],{"class":152},[133,2324,2325],{"class":135,"line":143},[133,2326,206],{"class":152},[133,2328,2329,2331,2333,2336,2339],{"class":135,"line":166},[133,2330,212],{"class":146},[133,2332,1915],{"class":152},[133,2334,2335],{"class":146},"\u002F",[133,2337,2338],{"class":152}," b;",[133,2340,2341],{"class":139},"  \u002F\u002F 编译期 b=0 会导致编译错误\n",[133,2343,2344],{"class":135,"line":173},[133,2345,227],{"class":152},[133,2347,2348,2350,2352,2354,2356,2358,2360,2363,2365,2368,2370],{"class":135,"line":179},[133,2349,5],{"class":146},[133,2351,149],{"class":146},[133,2353,1657],{"class":152},[133,2355,156],{"class":146},[133,2357,2305],{"class":186},[133,2359,190],{"class":152},[133,2361,2362],{"class":159},"10",[133,2364,2315],{"class":152},[133,2366,2367],{"class":159},"0",[133,2369,260],{"class":152},[133,2371,2372],{"class":139},"  \u002F\u002F ❌ 编译错误！\n",[15,2374,2375],{},"Correct practice: ensure parameter legality when calling at compile time.",[15,2377,2378],{},[25,2379,2380],{},"Error 3: Undefined behavior inside a constexpr function",[124,2382,2384],{"className":126,"code":2383,"language":128,"meta":129,"style":129},"constexpr int get(int* p)\n{\n    return *p;  \u002F\u002F 编译期不能解引用空指针\n}\nconstexpr int x = get(nullptr);  \u002F\u002F ❌ 编译错误！\n",[21,2385,2386,2405,2409,2422,2426],{"__ignoreMap":129},[133,2387,2388,2390,2392,2395,2397,2400,2403],{"class":135,"line":136},[133,2389,5],{"class":146},[133,2391,149],{"class":146},[133,2393,2394],{"class":186}," get",[133,2396,190],{"class":152},[133,2398,2399],{"class":146},"int*",[133,2401,2402],{"class":196}," p",[133,2404,200],{"class":152},[133,2406,2407],{"class":135,"line":143},[133,2408,206],{"class":152},[133,2410,2411,2413,2416,2419],{"class":135,"line":166},[133,2412,212],{"class":146},[133,2414,2415],{"class":146}," *",[133,2417,2418],{"class":152},"p;",[133,2420,2421],{"class":139},"  \u002F\u002F 编译期不能解引用空指针\n",[133,2423,2424],{"class":135,"line":173},[133,2425,227],{"class":152},[133,2427,2428,2430,2432,2434,2436,2438,2440,2443,2445],{"class":135,"line":179},[133,2429,5],{"class":146},[133,2431,149],{"class":146},[133,2433,1657],{"class":152},[133,2435,156],{"class":146},[133,2437,2394],{"class":186},[133,2439,190],{"class":152},[133,2441,2442],{"class":159},"nullptr",[133,2444,260],{"class":152},[133,2446,2372],{"class":139},[15,2448,2449],{},"The correct approach: Avoid undefined behavior in constexpr functions.",[15,2451,2452],{},[25,2453,2454],{},"Error 4: Assuming that constexpr functions always execute at compile time",[124,2456,2458],{"className":126,"code":2457,"language":128,"meta":129,"style":129},"constexpr int square(int x) { return x * x; }\n\nint n = 5;\nint y = square(n);  \u002F\u002F ✅ 这是运行期调用，不是编译期调用\n",[21,2459,2460,2486,2490,2502],{"__ignoreMap":129},[133,2461,2462,2464,2466,2468,2470,2472,2474,2477,2479,2481,2483],{"class":135,"line":136},[133,2463,5],{"class":146},[133,2465,149],{"class":146},[133,2467,187],{"class":186},[133,2469,190],{"class":152},[133,2471,193],{"class":146},[133,2473,1643],{"class":196},[133,2475,2476],{"class":152},") { ",[133,2478,1076],{"class":146},[133,2480,1657],{"class":152},[133,2482,218],{"class":146},[133,2484,2485],{"class":152}," x; }\n",[133,2487,2488],{"class":135,"line":143},[133,2489,170],{"emptyLinePlaceholder":169},[133,2491,2492,2494,2496,2498,2500],{"class":135,"line":166},[133,2493,193],{"class":146},[133,2495,215],{"class":152},[133,2497,156],{"class":146},[133,2499,605],{"class":159},[133,2501,163],{"class":152},[133,2503,2504,2506,2509,2511,2513,2515],{"class":135,"line":173},[133,2505,193],{"class":146},[133,2507,2508],{"class":152}," y ",[133,2510,156],{"class":146},[133,2512,187],{"class":186},[133,2514,1954],{"class":152},[133,2516,2517],{"class":139},"  \u002F\u002F ✅ 这是运行期调用，不是编译期调用\n",[15,2519,2520,2521,2315,2523,2525,2526,2528],{},"Correct approach: When forcing compile-time, place the result in variables ",[21,2522,5],{},[21,2524,1171],{},", or template parameters; starting from C++20, you can also use the ",[21,2527,92],{}," function.",[10,2530,2531],{"id":2531},"使用建议",[2533,2534,2535,2539,2542,2545,2548],"ul",{},[2536,2537,2538],"li",{},"明确目标：在开始前确定您的具体需求，以便选择最合适的工具或教程。",[2536,2540,2541],{},"充分利用资源：参考官方文档、教程和博客，这些资料能帮助您快速上手并解决问题。",[2536,2543,2544],{},"实践应用：通过动手操作项目或编写代码来巩固学习成果，提升实际操作能力。",[2536,2546,2547],{},"问题解决：遇到困难时，查阅参考资料或寻求社区支持，逐步培养独立解决问题的能力。",[2536,2549,2550],{},"分享经验：完成项目后，可以撰写文章或博客分享心得，帮助其他学习者。",[15,2552,2553],{},"如果需要针对特定领域（如单片机、机器人或环境搭建）的进一步建议，请提供更多信息，我将为您细化内容。",[2555,2556,2557,2563,2569,2577,2583],"ol",{},[2536,2558,2559,2562],{},[25,2560,2561],{},"Use constexpr Whenever Possible",": Move runtime calculations to compile-time for better program performance.",[2536,2564,2565,2568],{},[25,2566,2567],{},"constexpr functions work at both compile-time and runtime",": no need to write two copies of the code.",[2536,2570,2571,2576],{},[25,2572,2573,2574],{},"Compile-time checks with ",[21,2575,1171],{},": Very powerful when combined with constexpr functions.",[2536,2578,2579,2582],{},[25,2580,2581],{},"constexpr is not \"faster\" magic",": For small functions, the compiler already optimizes. But it's useful for scenarios like constant tables and precomputation.",[2536,2584,2585,2588],{},[25,2586,2587],{},"\"Must consider consteval only at compile time\"",": Prefer writing ordinary utility functions as constexpr for fewer restrictions.",[10,2590,2592],{"id":2591},"summary","Summary",[2533,2594,2595,2601,2607,2615,2623,2628],{},[2536,2596,2597,2598,2600],{},"The variable ",[21,2599,5],{}," must be determined at compile time and can be used as an array size or template parameter.",[2536,2602,2603,2604,2606],{},"The function ",[21,2605,5],{}," can be executed at compile time (when parameters are constexpr).",[2536,2608,2609,2611,2612,2614],{},[21,2610,5],{}," functions can also be invoked at runtime; only ",[21,2613,92],{}," must be invoked at compile time.",[2536,2616,2617,2619,2620,2622],{},[21,2618,333],{}," emphasizes \"immutability,\" and ",[21,2621,5],{}," emphasizes \"compile-time evaluation.\"",[2536,2624,2625,2626,422],{},"Starting with C++17, lambdas can use ",[21,2627,5],{},[2536,2629,2630,2632],{},[21,2631,1171],{}," + constexpr functions = compile-time safety nets.",[2634,2635,2636],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":129,"searchDepth":143,"depth":143,"links":2638},[2639,2640,2641,2642,2643,2644,2645,2646,2653,2654,2655,2656,2657],{"id":12,"depth":143,"text":13},{"id":31,"depth":143,"text":32},{"id":104,"depth":143,"text":105},{"id":111,"depth":143,"text":112},{"id":121,"depth":143,"text":122},{"id":320,"depth":143,"text":321},{"id":408,"depth":143,"text":409},{"id":489,"depth":143,"text":490,"children":2647},[2648,2649,2650,2651,2652],{"id":494,"depth":166,"text":495},{"id":712,"depth":166,"text":713},{"id":1015,"depth":166,"text":1016},{"id":1590,"depth":166,"text":1591},{"id":1801,"depth":166,"text":1802},{"id":2100,"depth":143,"text":2101},{"id":2107,"depth":143,"text":2108},{"id":2235,"depth":143,"text":2236},{"id":2531,"depth":143,"text":2531},{"id":2591,"depth":143,"text":2592},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","2000-0700","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-0700-constexpr",false,null,"en-US","en-us",{},{"title":5,"description":129},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","PCxzCt_v3WRS_pALJWtK2wcrtqFE2vjEw5b9xVLeRYs",[2677,2683,2688,2693,2698,2703,2708,2713,2718,2723,2728,2733,2738,2743,2748,2753,2758,2763,2768,2773,2778,2783,2788,2793,2798,2803,2808,2813,2818,2823,2828,2833,2838,2843,2848,2853,2858,2863,2868,2872,2877,2882,2887,2892,2893,2898,2903,2908,2913,2918,2923,2928,2933,2938,2943,2948,2953,2958,2963,2968,2973,2978,2983,2988,2993,2998,3003,3008,3013,3018,3023,3028,3033,3038,3043,3048,3053,3058,3063,3068,3073,3078],{"path":2678,"stem":2679,"title":2680,"date":2660,"chapterOrder":2681,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2684,"stem":2685,"title":2686,"date":2660,"chapterOrder":2687,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2689,"stem":2690,"title":2691,"date":2660,"chapterOrder":2692,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2694,"stem":2695,"title":2696,"date":2660,"chapterOrder":2697,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2699,"stem":2700,"title":2701,"date":2660,"chapterOrder":2702,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2704,"stem":2705,"title":2706,"date":2660,"chapterOrder":2707,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2709,"stem":2710,"title":2711,"date":2660,"chapterOrder":2712,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":2714,"stem":2715,"title":2716,"date":2660,"chapterOrder":2717,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2719,"stem":2720,"title":2721,"date":2660,"chapterOrder":2722,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":2724,"stem":2725,"title":2726,"date":2660,"chapterOrder":2727,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2729,"stem":2730,"title":2731,"date":2660,"chapterOrder":2732,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2734,"stem":2735,"title":2736,"date":2660,"chapterOrder":2737,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":2739,"stem":2740,"title":2741,"date":2660,"chapterOrder":2742,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2744,"stem":2745,"title":2746,"date":2660,"chapterOrder":2747,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2749,"stem":2750,"title":2751,"date":2660,"chapterOrder":2752,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2754,"stem":2755,"title":2756,"date":2660,"chapterOrder":2757,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2759,"stem":2760,"title":2761,"date":2660,"chapterOrder":2762,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2764,"stem":2765,"title":2766,"date":2660,"chapterOrder":2767,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2769,"stem":2770,"title":2771,"date":2660,"chapterOrder":2772,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2774,"stem":2775,"title":2776,"date":2660,"chapterOrder":2777,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2779,"stem":2780,"title":2781,"date":2660,"chapterOrder":2782,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2784,"stem":2785,"title":2786,"date":2660,"chapterOrder":2787,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2789,"stem":2790,"title":2791,"date":2660,"chapterOrder":2792,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":2794,"stem":2795,"title":2796,"date":2660,"chapterOrder":2797,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2799,"stem":2800,"title":2801,"date":2660,"chapterOrder":2802,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2804,"stem":2805,"title":2806,"date":2660,"chapterOrder":2807,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2809,"stem":2810,"title":2811,"date":2660,"chapterOrder":2812,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2814,"stem":2815,"title":2816,"date":2660,"chapterOrder":2817,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2819,"stem":2820,"title":2821,"date":2660,"chapterOrder":2822,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2824,"stem":2825,"title":2826,"date":2660,"chapterOrder":2827,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2829,"stem":2830,"title":2831,"date":2660,"chapterOrder":2832,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2834,"stem":2835,"title":2836,"date":2660,"chapterOrder":2837,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2839,"stem":2840,"title":2841,"date":2660,"chapterOrder":2842,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2844,"stem":2845,"title":2846,"date":2660,"chapterOrder":2847,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2849,"stem":2850,"title":2851,"date":2660,"chapterOrder":2852,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2854,"stem":2855,"title":2856,"date":2660,"chapterOrder":2857,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2859,"stem":2860,"title":2861,"date":2660,"chapterOrder":2862,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2864,"stem":2865,"title":2866,"date":2660,"chapterOrder":2867,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2869,"stem":2870,"title":2442,"date":2660,"chapterOrder":2871,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","2000-0200",{"path":2873,"stem":2874,"title":2875,"date":2660,"chapterOrder":2876,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2878,"stem":2879,"title":2880,"date":2660,"chapterOrder":2881,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2883,"stem":2884,"title":2885,"date":2660,"chapterOrder":2886,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2888,"stem":2889,"title":2890,"date":2660,"chapterOrder":2891,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2658,"stem":2674,"title":5,"date":2660,"chapterOrder":2659,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},{"path":2894,"stem":2895,"title":2896,"date":2660,"chapterOrder":2897,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2899,"stem":2900,"title":2901,"date":2660,"chapterOrder":2902,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2904,"stem":2905,"title":2906,"date":2660,"chapterOrder":2907,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2909,"stem":2910,"title":2911,"date":2660,"chapterOrder":2912,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2914,"stem":2915,"title":2916,"date":2660,"chapterOrder":2917,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2919,"stem":2920,"title":2921,"date":2660,"chapterOrder":2922,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2924,"stem":2925,"title":2926,"date":2660,"chapterOrder":2927,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2929,"stem":2930,"title":2931,"date":2660,"chapterOrder":2932,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":2934,"stem":2935,"title":2936,"date":2660,"chapterOrder":2937,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2939,"stem":2940,"title":2941,"date":2660,"chapterOrder":2942,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2944,"stem":2945,"title":2946,"date":2660,"chapterOrder":2947,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2949,"stem":2950,"title":2951,"date":2660,"chapterOrder":2952,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2954,"stem":2955,"title":2956,"date":2660,"chapterOrder":2957,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2959,"stem":2960,"title":2961,"date":2660,"chapterOrder":2962,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2964,"stem":2965,"title":2966,"date":2660,"chapterOrder":2967,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2969,"stem":2970,"title":2971,"date":2660,"chapterOrder":2972,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2974,"stem":2975,"title":2976,"date":2660,"chapterOrder":2977,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2979,"stem":2980,"title":2981,"date":2660,"chapterOrder":2982,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2984,"stem":2985,"title":2986,"date":2660,"chapterOrder":2987,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2989,"stem":2990,"title":2991,"date":2660,"chapterOrder":2992,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2994,"stem":2995,"title":2996,"date":2660,"chapterOrder":2997,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2999,"stem":3000,"title":3001,"date":2660,"chapterOrder":3002,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3004,"stem":3005,"title":3006,"date":2660,"chapterOrder":3007,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3009,"stem":3010,"title":3011,"date":2660,"chapterOrder":3012,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3014,"stem":3015,"title":3016,"date":2660,"chapterOrder":3017,"chapterDepth":143,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3019,"stem":3020,"title":3021,"date":2660,"chapterOrder":3022,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3024,"stem":3025,"title":3026,"date":2660,"chapterOrder":3027,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3029,"stem":3030,"title":3031,"date":2660,"chapterOrder":3032,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3034,"stem":3035,"title":3036,"date":2660,"chapterOrder":3037,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3039,"stem":3040,"title":3041,"date":2660,"chapterOrder":3042,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3044,"stem":3045,"title":3046,"date":2660,"chapterOrder":3047,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3049,"stem":3050,"title":3051,"date":2660,"chapterOrder":3052,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3054,"stem":3055,"title":3056,"date":2660,"chapterOrder":3057,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3059,"stem":3060,"title":3061,"date":2660,"chapterOrder":3062,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3064,"stem":3065,"title":3066,"date":2660,"chapterOrder":3067,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3069,"stem":3070,"title":3071,"date":2660,"chapterOrder":3072,"chapterDepth":136,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":3074,"stem":3075,"title":3076,"date":2660,"chapterOrder":3077,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":2667},"\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":2663,"stem":3079,"title":3080,"date":2660,"chapterOrder":2668,"chapterDepth":2682,"docKey":2662,"docRoot":2663,"docTitle":2664,"isWikiDoc":169,"isWikiIndex":169},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3082},[3083,3084,3087,3090,3093],{"path":2658,"localeSlug":2670,"i18nKey":2666},{"path":3085,"localeSlug":3086,"i18nKey":2666},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","zh-hant",{"path":3088,"localeSlug":3089,"i18nKey":2666},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","zh-hk",{"path":3091,"localeSlug":3092,"i18nKey":2666},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","zh-tw",{"path":3094,"localeSlug":3095,"i18nKey":2666},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","zh-cn",[2658,2673,3085,2673,3088,2673,3091,2673,3094,2673],1784646867487]