[{"data":1,"prerenderedAt":2298},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp":1594,"sidebar-sei-cert-cpp-coding-standard":1601},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":1580,"extension":1581,"meta":1582,"navigation":7,"path":1590,"seo":1591,"stem":1592,"__hash__":1593},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp.md","CTR56-CPP. Do not use pointer arithmetic on polymorphic objects",{"type":32,"value":33,"toc":1568},"minimark",[34,38,53,87,95,101,113,116,119,272,277,304,495,499,505,651,655,658,871,877,885,891,1100,1104,1107,1173,1177,1420,1424,1438,1442,1467,1471,1540,1543,1564],[35,36,30],"h1",{"id":37},"ctr56-cpp-do-not-use-pointer-arithmetic-on-polymorphic-objects",[39,40,41,42,46,47,52],"p",{},"The definition of ",[43,44,45],"em",{},"pointer arithmetic"," from the C++ Standard, [expr.add], paragraph 7 [ ",[48,49,51],"a",{"href":50},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ], states the following:",[54,55,56],"blockquote",{},[39,57,58,59,63,64,67,68,71,72,75,76,78,79,82,83,86],{},"For addition or subtraction, if the expressions ",[60,61,62],"code",{},"P"," or ",[60,65,66],{},"Q"," have type “pointer to ",[43,69,70],{},"cv"," ",[60,73,74],{},"T"," ”, where ",[60,77,74],{}," is different from the cv-unqualified array element type, the behavior is undefined. [ ",[43,80,81],{},"Note:"," In particular, a pointer to a base class cannot be used for pointer arithmetic when the array contains objects of a derived class type. — ",[43,84,85],{},"end note"," ]",[39,88,89,90,94],{},"Pointer arithmetic does not account for polymorphic object sizes, and attempting to perform pointer arithmetic on a polymorphic object value results in ",[48,91,93],{"href":92},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," .",[39,96,97,98,100],{},"The C++ Standard, [expr.sub], paragraph 1 [ ",[48,99,51],{"href":50}," ], defines array subscripting as being identical to pointer arithmetic. Specifically, it states the following:",[54,102,103],{},[39,104,105,106,109,110,94],{},"The expression ",[60,107,108],{},"E1[E2]"," is identical (by definition) to ",[60,111,112],{},"*((E1)+(E2))",[39,114,115],{},"Do not use pointer arithmetic, including array subscripting, on polymorphic objects.",[39,117,118],{},"The following code examples assume the following static variables and class definitions.",[120,121,126],"pre",{"className":122,"code":123,"language":124,"meta":125,"style":125},"language-cpp shiki shiki-themes github-light github-dark monokai","int globI;\ndouble globD;\n\nstruct S {\n  int i;\n  \n  S() : i(globI++) {}\n};\n\nstruct T : S {\n  double d;\n  \n  T() : S(), d(globD++) {}\n};\n","cpp","",[60,127,128,141,150,156,169,178,184,207,213,218,229,238,243,267],{"__ignoreMap":125},[129,130,133,137],"span",{"class":131,"line":132},"line",1,[129,134,136],{"class":135},"sq6CD","int",[129,138,140],{"class":139},"sMOD_"," globI;\n",[129,142,144,147],{"class":131,"line":143},2,[129,145,146],{"class":135},"double",[129,148,149],{"class":139}," globD;\n",[129,151,153],{"class":131,"line":152},3,[129,154,155],{"emptyLinePlaceholder":7},"\n",[129,157,159,162,166],{"class":131,"line":158},4,[129,160,161],{"class":135},"struct",[129,163,165],{"class":164},"sz2Vg"," S",[129,167,168],{"class":139}," {\n",[129,170,172,175],{"class":131,"line":171},5,[129,173,174],{"class":135},"  int",[129,176,177],{"class":139}," i;\n",[129,179,181],{"class":131,"line":180},6,[129,182,183],{"class":139},"  \n",[129,185,187,191,194,197,200,204],{"class":131,"line":186},7,[129,188,190],{"class":189},"srTi1","  S",[129,192,193],{"class":139},"() : ",[129,195,196],{"class":189},"i",[129,198,199],{"class":139},"(globI",[129,201,203],{"class":202},"sC2Qs","++",[129,205,206],{"class":139},") {}\n",[129,208,210],{"class":131,"line":209},8,[129,211,212],{"class":139},"};\n",[129,214,216],{"class":131,"line":215},9,[129,217,155],{"emptyLinePlaceholder":7},[129,219,221,223,226],{"class":131,"line":220},10,[129,222,161],{"class":135},[129,224,225],{"class":164}," T",[129,227,228],{"class":139}," : S {\n",[129,230,232,235],{"class":131,"line":231},11,[129,233,234],{"class":135},"  double",[129,236,237],{"class":139}," d;\n",[129,239,241],{"class":131,"line":240},12,[129,242,183],{"class":139},[129,244,246,249,251,254,257,260,263,265],{"class":131,"line":245},13,[129,247,248],{"class":189},"  T",[129,250,193],{"class":139},[129,252,253],{"class":189},"S",[129,255,256],{"class":139},"(), ",[129,258,259],{"class":189},"d",[129,261,262],{"class":139},"(globD",[129,264,203],{"class":202},[129,266,206],{"class":139},[129,268,270],{"class":131,"line":269},14,[129,271,212],{"class":139},[273,274,276],"h2",{"id":275},"noncompliant-code-example-pointer-arithmetic","Noncompliant Code Example (Pointer Arithmetic)",[39,278,279,280,283,284,286,287,290,291,293,294,296,297,299,300,303],{},"In this noncompliant code example, ",[60,281,282],{},"f()"," accepts an array of ",[60,285,253],{}," objects as its first parameter. However, ",[60,288,289],{},"main()"," passes an array of ",[60,292,74],{}," objects as the first argument to ",[60,295,282],{}," , which results in ",[48,298,93],{"href":92}," due to the pointer arithmetic used within the ",[60,301,302],{},"for"," loop.",[305,306,308],"code-block",{"quality":307},"bad",[120,309,311],{"className":122,"code":310,"language":124,"meta":125,"style":125},"#include \u003Ciostream>\n \n\u002F\u002F ... definitions for S, T, globI, globD ...\n\nvoid f(const S *someSes, std::size_t count) { \n  for (const S *end = someSes + count; someSes != end; ++someSes) {\n    std::cout \u003C\u003C someSes->i \u003C\u003C std::endl;\n  }\n}\n\nint main() {\n  T test[5];\n  f(test, 5);\n}\n",[60,312,313,322,327,333,337,378,420,442,447,452,456,466,478,491],{"__ignoreMap":125},[129,314,315,318],{"class":131,"line":132},[129,316,317],{"class":202},"#include",[129,319,321],{"class":320},"sstjo"," \u003Ciostream>\n",[129,323,324],{"class":131,"line":143},[129,325,326],{"class":139}," \n",[129,328,329],{"class":131,"line":152},[129,330,332],{"class":331},"s8-w5","\u002F\u002F ... definitions for S, T, globI, globD ...\n",[129,334,335],{"class":131,"line":158},[129,336,155],{"emptyLinePlaceholder":7},[129,338,339,342,345,348,351,353,356,360,363,366,369,372,375],{"class":131,"line":171},[129,340,341],{"class":135},"void",[129,343,344],{"class":189}," f",[129,346,347],{"class":139},"(",[129,349,350],{"class":202},"const",[129,352,165],{"class":164},[129,354,355],{"class":202}," *",[129,357,359],{"class":358},"sTHNf","someSes",[129,361,362],{"class":139},", ",[129,364,365],{"class":164},"std",[129,367,368],{"class":139},"::",[129,370,371],{"class":135},"size_t",[129,373,374],{"class":358}," count",[129,376,377],{"class":139},") { \n",[129,379,380,383,386,388,391,394,397,400,403,406,409,412,415,417],{"class":131,"line":180},[129,381,382],{"class":202},"  for",[129,384,385],{"class":139}," (",[129,387,350],{"class":202},[129,389,390],{"class":139}," S ",[129,392,393],{"class":202},"*",[129,395,396],{"class":139},"end ",[129,398,399],{"class":202},"=",[129,401,402],{"class":139}," someSes ",[129,404,405],{"class":202},"+",[129,407,408],{"class":139}," count; someSes ",[129,410,411],{"class":202},"!=",[129,413,414],{"class":139}," end; ",[129,416,203],{"class":202},[129,418,419],{"class":139},"someSes) {\n",[129,421,422,425,428,431,434,436,439],{"class":131,"line":186},[129,423,424],{"class":164},"    std",[129,426,427],{"class":139},"::cout ",[129,429,430],{"class":202},"\u003C\u003C",[129,432,433],{"class":139}," someSes->i ",[129,435,430],{"class":202},[129,437,438],{"class":164}," std",[129,440,441],{"class":139},"::endl;\n",[129,443,444],{"class":131,"line":209},[129,445,446],{"class":139},"  }\n",[129,448,449],{"class":131,"line":215},[129,450,451],{"class":139},"}\n",[129,453,454],{"class":131,"line":220},[129,455,155],{"emptyLinePlaceholder":7},[129,457,458,460,463],{"class":131,"line":231},[129,459,136],{"class":135},[129,461,462],{"class":189}," main",[129,464,465],{"class":139},"() {\n",[129,467,468,471,475],{"class":131,"line":240},[129,469,470],{"class":139},"  T test[",[129,472,474],{"class":473},"s7F3e","5",[129,476,477],{"class":139},"];\n",[129,479,480,483,486,488],{"class":131,"line":245},[129,481,482],{"class":189},"  f",[129,484,485],{"class":139},"(test, ",[129,487,474],{"class":473},[129,489,490],{"class":139},");\n",[129,492,493],{"class":131,"line":269},[129,494,451],{"class":139},[273,496,498],{"id":497},"noncompliant-code-example-array-subscripting","Noncompliant Code Example (Array Subscripting)",[39,500,501,502,504],{},"In this noncompliant code example, the ",[60,503,302],{}," loop uses array subscripting. Since array subscripts are computed using pointer arithmetic, this code also results in undefined behavior .",[305,506,507],{"quality":307},[120,508,510],{"className":122,"code":509,"language":124,"meta":125,"style":125},"#include \u003Ciostream>\n \n\u002F\u002F ... definitions for S, T, globI, globD ...\n\nvoid f(const S *someSes, std::size_t count) { \n  for (std::size_t i = 0; i \u003C count; ++i) {\n    std::cout \u003C\u003C someSes[i].i \u003C\u003C std::endl;\n  }\n}\n\nint main() {\n  T test[5];\n  f(test, 5);\n}\n",[60,511,512,518,522,526,530,558,592,609,613,617,621,629,637,647],{"__ignoreMap":125},[129,513,514,516],{"class":131,"line":132},[129,515,317],{"class":202},[129,517,321],{"class":320},[129,519,520],{"class":131,"line":143},[129,521,326],{"class":139},[129,523,524],{"class":131,"line":152},[129,525,332],{"class":331},[129,527,528],{"class":131,"line":158},[129,529,155],{"emptyLinePlaceholder":7},[129,531,532,534,536,538,540,542,544,546,548,550,552,554,556],{"class":131,"line":171},[129,533,341],{"class":135},[129,535,344],{"class":189},[129,537,347],{"class":139},[129,539,350],{"class":202},[129,541,165],{"class":164},[129,543,355],{"class":202},[129,545,359],{"class":358},[129,547,362],{"class":139},[129,549,365],{"class":164},[129,551,368],{"class":139},[129,553,371],{"class":135},[129,555,374],{"class":358},[129,557,377],{"class":139},[129,559,560,562,564,566,568,570,573,575,578,581,584,587,589],{"class":131,"line":180},[129,561,382],{"class":202},[129,563,385],{"class":139},[129,565,365],{"class":164},[129,567,368],{"class":139},[129,569,371],{"class":135},[129,571,572],{"class":139}," i ",[129,574,399],{"class":202},[129,576,577],{"class":473}," 0",[129,579,580],{"class":139},"; i ",[129,582,583],{"class":202},"\u003C",[129,585,586],{"class":139}," count; ",[129,588,203],{"class":202},[129,590,591],{"class":139},"i) {\n",[129,593,594,596,598,600,603,605,607],{"class":131,"line":186},[129,595,424],{"class":164},[129,597,427],{"class":139},[129,599,430],{"class":202},[129,601,602],{"class":139}," someSes[i].i ",[129,604,430],{"class":202},[129,606,438],{"class":164},[129,608,441],{"class":139},[129,610,611],{"class":131,"line":209},[129,612,446],{"class":139},[129,614,615],{"class":131,"line":215},[129,616,451],{"class":139},[129,618,619],{"class":131,"line":220},[129,620,155],{"emptyLinePlaceholder":7},[129,622,623,625,627],{"class":131,"line":231},[129,624,136],{"class":135},[129,626,462],{"class":189},[129,628,465],{"class":139},[129,630,631,633,635],{"class":131,"line":240},[129,632,470],{"class":139},[129,634,474],{"class":473},[129,636,477],{"class":139},[129,638,639,641,643,645],{"class":131,"line":245},[129,640,482],{"class":189},[129,642,485],{"class":139},[129,644,474],{"class":473},[129,646,490],{"class":139},[129,648,649],{"class":131,"line":269},[129,650,451],{"class":139},[273,652,654],{"id":653},"compliant-solution-array","Compliant Solution (Array)",[39,656,657],{},"Instead of having an array of objects, an array of pointers solves the problem of the objects being of different sizes, as in this compliant solution.",[305,659,661],{"quality":660},"good",[120,662,664],{"className":122,"code":663,"language":124,"meta":125,"style":125},"#include \u003Ciostream>\n\n\u002F\u002F ... definitions for S, T, globI, globD ...\n\nvoid f(const S * const *someSes, std::size_t count) { \n  for (const S * const *end = someSes + count; someSes != end; ++someSes) {\n    std::cout \u003C\u003C (*someSes)->i \u003C\u003C std::endl;\n  }\n}\n\nint main() {\n  S *test[] = {new T, new T, new T, new T, new T};\n  f(test, 5);\n  for (auto v : test) {\n    delete v;\n  }\n}\n",[60,665,666,672,676,680,684,717,751,772,776,780,784,792,830,840,852,861,866],{"__ignoreMap":125},[129,667,668,670],{"class":131,"line":132},[129,669,317],{"class":202},[129,671,321],{"class":320},[129,673,674],{"class":131,"line":143},[129,675,155],{"emptyLinePlaceholder":7},[129,677,678],{"class":131,"line":152},[129,679,332],{"class":331},[129,681,682],{"class":131,"line":158},[129,683,155],{"emptyLinePlaceholder":7},[129,685,686,688,690,692,694,696,698,701,703,705,707,709,711,713,715],{"class":131,"line":171},[129,687,341],{"class":135},[129,689,344],{"class":189},[129,691,347],{"class":139},[129,693,350],{"class":202},[129,695,165],{"class":164},[129,697,355],{"class":202},[129,699,700],{"class":202}," const",[129,702,355],{"class":202},[129,704,359],{"class":358},[129,706,362],{"class":139},[129,708,365],{"class":164},[129,710,368],{"class":139},[129,712,371],{"class":135},[129,714,374],{"class":358},[129,716,377],{"class":139},[129,718,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749],{"class":131,"line":180},[129,720,382],{"class":202},[129,722,385],{"class":139},[129,724,350],{"class":202},[129,726,390],{"class":139},[129,728,393],{"class":202},[129,730,700],{"class":202},[129,732,355],{"class":202},[129,734,396],{"class":139},[129,736,399],{"class":202},[129,738,402],{"class":139},[129,740,405],{"class":202},[129,742,408],{"class":139},[129,744,411],{"class":202},[129,746,414],{"class":139},[129,748,203],{"class":202},[129,750,419],{"class":139},[129,752,753,755,757,759,761,763,766,768,770],{"class":131,"line":186},[129,754,424],{"class":164},[129,756,427],{"class":139},[129,758,430],{"class":202},[129,760,385],{"class":139},[129,762,393],{"class":202},[129,764,765],{"class":139},"someSes)->i ",[129,767,430],{"class":202},[129,769,438],{"class":164},[129,771,441],{"class":139},[129,773,774],{"class":131,"line":209},[129,775,446],{"class":139},[129,777,778],{"class":131,"line":215},[129,779,451],{"class":139},[129,781,782],{"class":131,"line":220},[129,783,155],{"emptyLinePlaceholder":7},[129,785,786,788,790],{"class":131,"line":231},[129,787,136],{"class":135},[129,789,462],{"class":189},[129,791,465],{"class":139},[129,793,794,797,799,802,804,807,810,813,815,817,819,821,823,825,827],{"class":131,"line":240},[129,795,796],{"class":139},"  S ",[129,798,393],{"class":202},[129,800,801],{"class":139},"test[] ",[129,803,399],{"class":202},[129,805,806],{"class":139}," {",[129,808,809],{"class":202},"new",[129,811,812],{"class":139}," T, ",[129,814,809],{"class":202},[129,816,812],{"class":139},[129,818,809],{"class":202},[129,820,812],{"class":139},[129,822,809],{"class":202},[129,824,812],{"class":139},[129,826,809],{"class":202},[129,828,829],{"class":139}," T};\n",[129,831,832,834,836,838],{"class":131,"line":245},[129,833,482],{"class":189},[129,835,485],{"class":139},[129,837,474],{"class":473},[129,839,490],{"class":139},[129,841,842,844,846,849],{"class":131,"line":269},[129,843,382],{"class":202},[129,845,385],{"class":139},[129,847,848],{"class":135},"auto",[129,850,851],{"class":139}," v : test) {\n",[129,853,855,858],{"class":131,"line":854},15,[129,856,857],{"class":202},"    delete",[129,859,860],{"class":139}," v;\n",[129,862,864],{"class":131,"line":863},16,[129,865,446],{"class":139},[129,867,869],{"class":131,"line":868},17,[129,870,451],{"class":139},[39,872,873,874,876],{},"The elements in the arrays are no longer polymorphic objects (instead, they are pointers to polymorphic objects), and so there is no ",[48,875,93],{"href":92}," with the pointer arithmetic.",[273,878,880,881,884],{"id":879},"compliant-solution-stdvector","Compliant Solution ( ",[60,882,883],{},"std::vector"," )",[39,886,887,888,890],{},"Another approach is to use a standard template library (STL) container instead of an array and have ",[60,889,282],{}," accept iterators as parameters, as in this compliant solution. However, because STL containers require homogeneous elements, pointers are still required within the container.",[305,892,893],{"quality":660},[120,894,896],{"className":122,"code":895,"language":124,"meta":125,"style":125},"#include \u003Ciostream>\n#include \u003Cvector>\n\n\u002F\u002F ... definitions for S, T, globI, globD ...\ntemplate \u003Ctypename Iter>\nvoid f(Iter i, Iter e) {\n  for (; i != e; ++i) {\n    std::cout \u003C\u003C (*i)->i \u003C\u003C std::endl;\n  }\n}\n\nint main() {\n  std::vector\u003CS *> test{new T, new T, new T, new T, new T};\n  f(test.cbegin(), test.cend());\n  for (auto v : test) {\n    delete v;\n  }\n}\n",[60,897,898,904,911,915,919,936,960,976,997,1001,1005,1009,1017,1056,1075,1085,1091,1095],{"__ignoreMap":125},[129,899,900,902],{"class":131,"line":132},[129,901,317],{"class":202},[129,903,321],{"class":320},[129,905,906,908],{"class":131,"line":143},[129,907,317],{"class":202},[129,909,910],{"class":320}," \u003Cvector>\n",[129,912,913],{"class":131,"line":152},[129,914,155],{"emptyLinePlaceholder":7},[129,916,917],{"class":131,"line":158},[129,918,332],{"class":331},[129,920,921,924,927,930,933],{"class":131,"line":171},[129,922,923],{"class":135},"template",[129,925,926],{"class":139}," \u003C",[129,928,929],{"class":135},"typename",[129,931,932],{"class":164}," Iter",[129,934,935],{"class":139},">\n",[129,937,938,940,942,944,947,950,952,954,957],{"class":131,"line":180},[129,939,341],{"class":135},[129,941,344],{"class":189},[129,943,347],{"class":139},[129,945,946],{"class":164},"Iter",[129,948,949],{"class":358}," i",[129,951,362],{"class":139},[129,953,946],{"class":164},[129,955,956],{"class":358}," e",[129,958,959],{"class":139},") {\n",[129,961,962,964,967,969,972,974],{"class":131,"line":186},[129,963,382],{"class":202},[129,965,966],{"class":139}," (; i ",[129,968,411],{"class":202},[129,970,971],{"class":139}," e; ",[129,973,203],{"class":202},[129,975,591],{"class":139},[129,977,978,980,982,984,986,988,991,993,995],{"class":131,"line":209},[129,979,424],{"class":164},[129,981,427],{"class":139},[129,983,430],{"class":202},[129,985,385],{"class":139},[129,987,393],{"class":202},[129,989,990],{"class":139},"i)->i ",[129,992,430],{"class":202},[129,994,438],{"class":164},[129,996,441],{"class":139},[129,998,999],{"class":131,"line":215},[129,1000,446],{"class":139},[129,1002,1003],{"class":131,"line":220},[129,1004,451],{"class":139},[129,1006,1007],{"class":131,"line":231},[129,1008,155],{"emptyLinePlaceholder":7},[129,1010,1011,1013,1015],{"class":131,"line":240},[129,1012,136],{"class":135},[129,1014,462],{"class":189},[129,1016,465],{"class":139},[129,1018,1019,1022,1025,1027,1030,1033,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054],{"class":131,"line":245},[129,1020,1021],{"class":164},"  std",[129,1023,1024],{"class":139},"::vector",[129,1026,583],{"class":202},[129,1028,1029],{"class":139},"S ",[129,1031,1032],{"class":202},"*>",[129,1034,1035],{"class":139}," test{",[129,1037,809],{"class":202},[129,1039,812],{"class":139},[129,1041,809],{"class":202},[129,1043,812],{"class":139},[129,1045,809],{"class":202},[129,1047,812],{"class":139},[129,1049,809],{"class":202},[129,1051,812],{"class":139},[129,1053,809],{"class":202},[129,1055,829],{"class":139},[129,1057,1058,1060,1063,1066,1069,1072],{"class":131,"line":269},[129,1059,482],{"class":189},[129,1061,1062],{"class":139},"(test.",[129,1064,1065],{"class":189},"cbegin",[129,1067,1068],{"class":139},"(), test.",[129,1070,1071],{"class":189},"cend",[129,1073,1074],{"class":139},"());\n",[129,1076,1077,1079,1081,1083],{"class":131,"line":854},[129,1078,382],{"class":202},[129,1080,385],{"class":139},[129,1082,848],{"class":135},[129,1084,851],{"class":139},[129,1086,1087,1089],{"class":131,"line":863},[129,1088,857],{"class":202},[129,1090,860],{"class":139},[129,1092,1093],{"class":131,"line":868},[129,1094,446],{"class":139},[129,1096,1098],{"class":131,"line":1097},18,[129,1099,451],{"class":139},[273,1101,1103],{"id":1102},"risk-assessment","Risk Assessment",[39,1105,1106],{},"Using arrays polymorphically can result in memory corruption, which could lead to an attacker being able to execute arbitrary code.",[1108,1109,1110,1111,1110,1141],"table",{},"\n  ",[1112,1113,1114,1115,1110],"thead",{},"\n    ",[1116,1117,1118,1119,1118,1123,1118,1126,1118,1129,1118,1132,1118,1135,1118,1138,1114],"tr",{},"\n      ",[1120,1121,1122],"th",{},"Rule",[1120,1124,1125],{},"Severity",[1120,1127,1128],{},"Likelihood",[1120,1130,1131],{},"Detectable",[1120,1133,1134],{},"Repairable",[1120,1136,1137],{},"Priority",[1120,1139,1140],{},"Level",[1142,1143,1114,1144,1110],"tbody",{},[1116,1145,1118,1146,1118,1150,1118,1153,1118,1156,1118,1159,1118,1161,1118,1168,1114],{},[1147,1148,1149],"td",{},"CTR56-CPP",[1147,1151,1152],{},"High",[1147,1154,1155],{},"Likely",[1147,1157,1158],{},"No",[1147,1160,1158],{},[1147,1162,1164],{"style":1163},"color: #f1c40f;",[1165,1166,1167],"b",{},"P9",[1147,1169,1170],{"style":1163},[1165,1171,1172],{},"L2",[273,1174,1176],{"id":1175},"automated-detection","Automated Detection",[1108,1178,1181],{"className":1179},[1180],"wrapped",[1142,1182,1183,1207,1238,1266,1292,1334,1365,1391],{},[1116,1184,1187,1192,1197,1202],{"className":1185},[1186],"header",[1120,1188,1189],{},[39,1190,1191],{},"Tool",[1120,1193,1194],{},[39,1195,1196],{},"Version",[1120,1198,1199],{},[39,1200,1201],{},"Checker",[1120,1203,1204],{},[39,1205,1206],{},"Description",[1116,1208,1211,1217,1227,1233],{"className":1209},[1210],"odd",[1147,1212,1213],{},[48,1214,1216],{"href":1215},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","Axivion Bauhaus Suite",[1147,1218,1219],{},[1220,1221,1224],"div",{"className":1222},[1223],"content-wrapper",[39,1225,1226],{},"7.2.0",[1147,1228,1229],{},[1230,1231,1232],"strong",{},"CertC++-CTR56",[1147,1234,1235],{},[1236,1237],"br",{},[1116,1239,1242,1248,1254,1261],{"className":1240},[1241],"even",[1147,1243,1244],{},[48,1245,1247],{"href":1246},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[1147,1249,1250],{},[1220,1251,1253],{"className":1252},[1223],"9.1p0",[1147,1255,1256],{},[39,1257,1258],{},[1230,1259,1260],{},"LANG.STRUCT.PARITH",[1147,1262,1263],{},[39,1264,1265],{},"Pointer Arithmetic",[1116,1267,1269,1275,1283,1288],{"className":1268},[1210],[1147,1270,1271],{},[48,1272,1274],{"href":1273},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[1147,1276,1277],{},[1220,1278,1280],{"className":1279},[1223],[39,1281,1282],{},"2025.2",[1147,1284,1285],{},[1230,1286,1287],{},"C++3073",[1147,1289,1290],{},[1236,1291],{},[1116,1293,1295,1301,1306,1323],{"className":1294},[1241],[1147,1296,1297],{},[48,1298,1300],{"href":1299},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[1147,1302,1303],{},[1220,1304,1282],{"className":1305},[1223],[1147,1307,1308],{},[39,1309,1310,1313,1315,1318,1320],{},[1230,1311,1312],{},"CERT_CPP-CTR56-a",[1236,1314],{},[1230,1316,1317],{},"CERT_CPP-CTR56-b",[1236,1319],{},[1230,1321,1322],{},"CERT_CPP-CTR56-c",[1147,1324,1325],{},[39,1326,1327,1328,1330,1331,1333],{},"Don't treat arrays polymorphically",[1236,1329],{},"\nA pointer to an array of derived class objects should not be converted to a base class pointer",[1236,1332],{},"\nDo not treat arrays polymorphically",[1116,1335,1337,1343,1349,1360],{"className":1336},[1210],[1147,1338,1339],{},[48,1340,1342],{"href":1341},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[1147,1344,1345],{},[1220,1346,1348],{"className":1347},[1223],"9.7.1",[1147,1350,1351],{},[39,1352,1353,71,1356],{},[1230,1354,1355],{},"567 S",[1230,1357,1358],{},[1236,1359],{},[1147,1361,1362],{},[39,1363,1364],{},"Enhanced Enforcement",[1116,1366,1368,1374,1382,1388],{"className":1367},[1241],[1147,1369,1370],{},[48,1371,1373],{"href":1372},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[1147,1375,1376],{},[1220,1377,1379],{"className":1378},[1223],[39,1380,1381],{},"R2025b",[1147,1383,1384],{},[48,1385,1387],{"href":1386},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcctr56cpp.html","CERT C++: CTR56-CPP",[1147,1389,1390],{},"Checks for pointer arithmetic on polymorphic object (rule fully covered)",[1116,1392,1394,1400,1408,1416],{"className":1393},[1210],[1147,1395,1396],{},[48,1397,1399],{"href":1398},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","PVS-Studio",[1147,1401,1402],{},[1220,1403,1405],{"className":1404},[1223],[39,1406,1407],{},"7.42",[1147,1409,1410],{},[1230,1411,1412],{},[48,1413,1415],{"href":1414},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv777\u002F","V777",[1147,1417,1418],{},[1236,1419],{},[273,1421,1423],{"id":1422},"related-vulnerabilities","Related Vulnerabilities",[39,1425,1426,1427,1431,1432,94],{},"Search for ",[48,1428,1430],{"href":1429},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerabil","vulnerabilities"," resulting from the violation of this rule on the ",[48,1433,1437],{"href":1434,"rel":1435},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+CTR39-CPP",[1436],"nofollow","CERT website",[273,1439,1441],{"id":1440},"related-guidelines","Related Guidelines",[1108,1443,1444,1452],{},[1112,1445,1446],{},[1116,1447,1448,1450],{},[1120,1449],{},[1120,1451],{},[1142,1453,1454],{},[1116,1455,1456,1461],{},[1147,1457,1458],{},[48,1459,1460],{"href":17},"SEI CERT C Coding Standard",[1147,1462,1463],{},[48,1464,1466],{"href":1465},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Farrays-arr\u002Farr39-c","ARR39-C. Do not add or subtract a scaled integer to a pointer",[273,1468,1470],{"id":1469},"bibliography","Bibliography",[1108,1472,1474],{"className":1473},[1180],[1142,1475,1476,1492,1504,1516,1528],{},[1116,1477,1479,1484],{"className":1478},[1210],[1147,1480,1481,1482,86],{},"[ ",[48,1483,51],{"href":50},[1147,1485,1486],{},[39,1487,1488,1489,1491],{},"Subclause 5.7, \"Additive Operators\"",[1236,1490],{},"\nSubclause 5.2.1, \"Subscripting\"",[1116,1493,1495,1501],{"className":1494},[1241],[1147,1496,1481,1497,86],{},[48,1498,1500],{"href":1499},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-LockheedMartin05","Lockheed Martin 2005",[1147,1502,1503],{},"AV Rule 96, \"Arrays shall not be treated polymorphically\"",[1116,1505,1507,1513],{"className":1506},[1210],[1147,1508,1481,1509,86],{},[48,1510,1512],{"href":1511},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Meyers96","Meyers 1996",[1147,1514,1515],{},"Item 3, \"Never Treat Arrays Polymorphically\"",[1116,1517,1519,1525],{"className":1518},[1241],[1147,1520,1481,1521,86],{},[48,1522,1524],{"href":1523},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Stroustrup06","Stroustrup 2006",[1147,1526,1527],{},"\"What's Wrong with Arrays?\"",[1116,1529,1531,1537],{"className":1530},[1210],[1147,1532,1481,1533,86],{},[48,1534,1536],{"href":1535},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Sutter04","Sutter 2004",[1147,1538,1539],{},"Item 100, \"Don't Treat Arrays Polymorphically\"",[1541,1542],"hr",{},[39,1544,1545,71,1552,71,1558],{},[48,1546,1548],{"href":1547},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp",[1549,1550],"img",{"src":1551},"\u002Fattachments\u002F88046682\u002F88480621.png",[48,1553,1555],{"href":1554},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002F",[1549,1556],{"src":1557},"\u002Fattachments\u002F88046682\u002F88475556.png",[48,1559,1561],{"href":1560},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp",[1549,1562],{"src":1563},"\u002Fattachments\u002F88046682\u002F88475555.png",[1565,1566,1567],"style",{},"html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sz2Vg, html code.shiki .sz2Vg{--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}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 .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .sTHNf, html code.shiki .sTHNf{--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":125,"searchDepth":143,"depth":143,"links":1569},[1570,1571,1572,1573,1575,1576,1577,1578,1579],{"id":275,"depth":143,"text":276},{"id":497,"depth":143,"text":498},{"id":653,"depth":143,"text":654},{"id":879,"depth":143,"text":1574},"Compliant Solution ( std::vector )",{"id":1102,"depth":143,"text":1103},{"id":1175,"depth":143,"text":1176},{"id":1422,"depth":143,"text":1423},{"id":1440,"depth":143,"text":1441},{"id":1469,"depth":143,"text":1470},"The definition of pointer arithmetic from the C++ Standard, [expr.add], paragraph 7 [ ISO\u002FIEC 14882-2014 ], states the following:","md",{"tags":1583},[1584,1585,1586,1587,1588,1589],"review","ctr","ptc","review-dms","rule","review-ajb","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp",{"title":30,"description":1580},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp","STH4qBRcMQeE58-5azX3Lis-55Rse0hLhGVLJeqtMug",[1595,1598],{"title":1596,"path":1547,"stem":1597,"children":-1},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",{"title":1599,"path":1560,"stem":1600,"children":-1},"CTR57-CPP. Provide a valid ordering predicate","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp",[1602],{"title":1603,"path":1604,"stem":1605,"children":1606},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1607,1608,1675,2070,2284,2294],{"title":1603,"path":1604,"stem":1605},{"title":1609,"path":1610,"stem":1611,"children":1612},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1613,1614],{"title":1609,"path":1610,"stem":1611},{"title":1615,"path":1616,"stem":1617,"children":1618},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1619,1620,1624,1628,1632,1636,1640,1644,1648,1652,1656,1660,1664,1668,1672],{"title":1615,"path":1616,"stem":1617},{"title":1621,"path":1622,"stem":1623},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1625,"path":1626,"stem":1627},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1629,"path":1630,"stem":1631},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1633,"path":1634,"stem":1635},"How this Coding Standard Is Organized","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fhow-this-coding-standard-is-organized","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F05.how-this-coding-standard-is-organized",{"title":1637,"path":1638,"stem":1639},"Relation to the CERT C Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frelation-to-the-cert-c-coding-standard","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F06.relation-to-the-cert-c-coding-standard",{"title":1641,"path":1642,"stem":1643},"Rules Versus Recommendations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F07.rules-versus-recommendations",{"title":1645,"path":1646,"stem":1647},"Tool Selection and Validation","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F08.tool-selection-and-validation",{"title":1649,"path":1650,"stem":1651},"Conformance Testing","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fconformance-testing","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F09.conformance-testing",{"title":1653,"path":1654,"stem":1655},"Development Process","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F10.development-process",{"title":1657,"path":1658,"stem":1659},"System Qualities","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F11.system-qualities",{"title":1661,"path":1662,"stem":1663},"Automatically Generated Code","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F12.automatically-generated-code",{"title":1665,"path":1666,"stem":1667},"Government Regulations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fgovernment-regulations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F13.government-regulations",{"title":1669,"path":1670,"stem":1671},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":1176,"path":1673,"stem":1674},"\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomated-detection","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F15.automated-detection",{"title":1676,"path":1677,"stem":1678,"children":1679},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1680,1681,1703,1737,1770,1820,1878,1940,1954,1964,2002,2028],{"title":1676,"path":1677,"stem":1678},{"title":1682,"path":1683,"stem":1684,"children":1685},"Characters and Strings (STR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F1.index",[1686,1687,1691,1695,1699],{"title":1682,"path":1683,"stem":1684},{"title":1688,"path":1689,"stem":1690},"STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F2.str50-cpp",{"title":1692,"path":1693,"stem":1694},"STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp",{"title":1696,"path":1697,"stem":1698},"STR53-CPP. Range check element access","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F4.str53-cpp",{"title":1700,"path":1701,"stem":1702},"string from a null pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer",{"title":1704,"path":1705,"stem":1706,"children":1707},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1708,1709,1713,1717,1721,1725,1729,1733],{"title":1704,"path":1705,"stem":1706},{"title":1710,"path":1711,"stem":1712},"CON50-CPP. Do not destroy a mutex while it is locked","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp",{"title":1714,"path":1715,"stem":1716},"CON51-CPP. Ensure actively held locks are released on exceptional conditions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F3.con51-cpp",{"title":1718,"path":1719,"stem":1720},"CON52-CPP. Prevent data races when accessing bit-fields from multiple threads","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F4.con52-cpp",{"title":1722,"path":1723,"stem":1724},"CON53-CPP. Avoid deadlock by locking in a predefined order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F5.con53-cpp",{"title":1726,"path":1727,"stem":1728},"CON54-CPP. Wrap functions that can spuriously wake up in a loop","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F6.con54-cpp",{"title":1730,"path":1731,"stem":1732},"CON55-CPP. Preserve thread safety and liveness when using condition variables","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F7.con55-cpp",{"title":1734,"path":1735,"stem":1736},"CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F8.con56-cpp",{"title":1738,"path":1739,"stem":1740,"children":1741},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1742,1743,1747,1751,1755,1759,1763,1764,1765,1766],{"title":1738,"path":1739,"stem":1740},{"title":1744,"path":1745,"stem":1746},"CTR50-CPP. Guarantee that container indices and iterators are within the valid range","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F02.ctr50-cpp",{"title":1748,"path":1749,"stem":1750},"CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F03.ctr51-cpp",{"title":1752,"path":1753,"stem":1754},"CTR52-CPP. Guarantee that library functions do not overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F04.ctr52-cpp",{"title":1756,"path":1757,"stem":1758},"CTR53-CPP. Use valid iterator ranges","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F05.ctr53-cpp",{"title":1760,"path":1761,"stem":1762},"CTR54-CPP. Do not subtract iterators that do not refer to the same container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp",{"title":1596,"path":1547,"stem":1597},{"title":30,"path":1590,"stem":1592},{"title":1599,"path":1560,"stem":1600},{"title":1767,"path":1768,"stem":1769},"CTR58-CPP. Predicate function objects should not be mutable","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",{"title":1771,"path":1772,"stem":1773,"children":1774},"Declarations and Initialization (DCL)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F01.index",[1775,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812,1816],{"title":1771,"path":1772,"stem":1773},{"title":1777,"path":1778,"stem":1779},"DCL50-CPP. Do not define a C-style variadic function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F02.dcl50-cpp",{"title":1781,"path":1782,"stem":1783},"DCL51-CPP. Do not declare or define a reserved identifier","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F03.dcl51-cpp",{"title":1785,"path":1786,"stem":1787},"DCL52-CPP. Never qualify a reference type with const or volatile","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F04.dcl52-cpp",{"title":1789,"path":1790,"stem":1791},"DCL53-CPP. Do not write syntactically ambiguous declarations","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F05.dcl53-cpp",{"title":1793,"path":1794,"stem":1795},"DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F06.dcl54-cpp",{"title":1797,"path":1798,"stem":1799},"DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F07.dcl55-cpp",{"title":1801,"path":1802,"stem":1803},"DCL56-CPP. Avoid cycles during initialization of static objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F08.dcl56-cpp",{"title":1805,"path":1806,"stem":1807},"DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F09.dcl57-cpp",{"title":1809,"path":1810,"stem":1811},"DCL58-CPP. Do not modify the standard namespaces","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F10.dcl58-cpp",{"title":1813,"path":1814,"stem":1815},"DCL59-CPP. Do not define an unnamed namespace in a header file","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F11.dcl59-cpp",{"title":1817,"path":1818,"stem":1819},"DCL60-CPP. Obey the one-definition rule","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F12.dcl60-cpp",{"title":1821,"path":1822,"stem":1823,"children":1824},"Exceptions and Error Handling (ERR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F01.index",[1825,1826,1830,1834,1838,1842,1846,1850,1854,1858,1862,1866,1870,1874],{"title":1821,"path":1822,"stem":1823},{"title":1827,"path":1828,"stem":1829},"ERR50-CPP. Do not abruptly terminate the program","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F02.err50-cpp",{"title":1831,"path":1832,"stem":1833},"ERR51-CPP. Handle all exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F03.err51-cpp",{"title":1835,"path":1836,"stem":1837},"ERR52-CPP. Do not use setjmp() or longjmp()","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F04.err52-cpp",{"title":1839,"path":1840,"stem":1841},"ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F05.err53-cpp",{"title":1843,"path":1844,"stem":1845},"ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F06.err54-cpp",{"title":1847,"path":1848,"stem":1849},"ERR55-CPP. Honor exception specifications","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F07.err55-cpp",{"title":1851,"path":1852,"stem":1853},"ERR56-CPP. Guarantee exception safety","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp",{"title":1855,"path":1856,"stem":1857},"ERR57-CPP. Do not leak resources when handling exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F09.err57-cpp",{"title":1859,"path":1860,"stem":1861},"ERR58-CPP. Handle all exceptions thrown before main() begins executing","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F10.err58-cpp",{"title":1863,"path":1864,"stem":1865},"ERR59-CPP. Do not throw an exception across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F11.err59-cpp",{"title":1867,"path":1868,"stem":1869},"ERR60-CPP. Exception objects must be nothrow copy constructible","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F12.err60-cpp",{"title":1871,"path":1872,"stem":1873},"ERR61-CPP. Catch exceptions by lvalue reference","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F13.err61-cpp",{"title":1875,"path":1876,"stem":1877},"ERR62-CPP. Detect errors when converting a string to a number","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F14.err62-cpp",{"title":1879,"path":1880,"stem":1881,"children":1882},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1883,1884,1888,1892,1896,1900,1904,1908,1912,1916,1920,1924,1928,1932,1936],{"title":1879,"path":1880,"stem":1881},{"title":1885,"path":1886,"stem":1887},"EXP50-CPP. Do not depend on the order of evaluation for side effects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F02.exp50-cpp",{"title":1889,"path":1890,"stem":1891},"EXP51-CPP. Do not delete an array through a pointer of the incorrect type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F03.exp51-cpp",{"title":1893,"path":1894,"stem":1895},"EXP52-CPP. Do not rely on side effects in unevaluated operands","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F04.exp52-cpp",{"title":1897,"path":1898,"stem":1899},"EXP53-CPP. Do not read uninitialized memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F05.exp53-cpp",{"title":1901,"path":1902,"stem":1903},"EXP54-CPP. Do not access an object outside of its lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F06.exp54-cpp",{"title":1905,"path":1906,"stem":1907},"EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F07.exp55-cpp",{"title":1909,"path":1910,"stem":1911},"EXP56-CPP. Do not call a function with a mismatched language linkage","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F08.exp56-cpp",{"title":1913,"path":1914,"stem":1915},"EXP57-CPP. Do not cast or delete pointers to incomplete classes","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F09.exp57-cpp",{"title":1917,"path":1918,"stem":1919},"EXP58-CPP. Pass an object of the correct type to va_start","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F10.exp58-cpp",{"title":1921,"path":1922,"stem":1923},"EXP59-CPP. Use offsetof() on valid types and members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F11.exp59-cpp",{"title":1925,"path":1926,"stem":1927},"EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F12.exp60-cpp",{"title":1929,"path":1930,"stem":1931},"EXP61-CPP. A lambda object must not outlive any of its reference captured objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F13.exp61-cpp",{"title":1933,"path":1934,"stem":1935},"EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F14.exp62-cpp",{"title":1937,"path":1938,"stem":1939},"EXP63-CPP. Do not rely on the value of a moved-from object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp63-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F15.exp63-cpp",{"title":1941,"path":1942,"stem":1943,"children":1944},"Input Output (FIO)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F1.index",[1945,1946,1950],{"title":1941,"path":1942,"stem":1943},{"title":1947,"path":1948,"stem":1949},"FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F2.fio50-cpp",{"title":1951,"path":1952,"stem":1953},"FIO51-CPP. Close files when they are no longer needed","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F3.fio51-cpp",{"title":1955,"path":1956,"stem":1957,"children":1958},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1959,1960],{"title":1955,"path":1956,"stem":1957},{"title":1961,"path":1962,"stem":1963},"INT50-CPP. Do not cast to an out-of-range enumeration value","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int\u002Fint50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F2.int50-cpp",{"title":1965,"path":1966,"stem":1967,"children":1968},"Memory Management (MEM)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F1.index",[1969,1970,1974,1978,1982,1986,1990,1994,1998],{"title":1965,"path":1966,"stem":1967},{"title":1971,"path":1972,"stem":1973},"MEM50-CPP. Do not access freed memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F2.mem50-cpp",{"title":1975,"path":1976,"stem":1977},"MEM51-CPP. Properly deallocate dynamically allocated resources","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F3.mem51-cpp",{"title":1979,"path":1980,"stem":1981},"MEM52-CPP. Detect and handle memory allocation errors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F4.mem52-cpp",{"title":1983,"path":1984,"stem":1985},"MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F5.mem53-cpp",{"title":1987,"path":1988,"stem":1989},"MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F6.mem54-cpp",{"title":1991,"path":1992,"stem":1993},"MEM55-CPP. Honor replacement dynamic storage management requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F7.mem55-cpp",{"title":1995,"path":1996,"stem":1997},"MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F8.mem56-cpp",{"title":1999,"path":2000,"stem":2001},"MEM57-CPP. Avoid using default operator new for over-aligned types","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F9.mem57-cpp",{"title":2003,"path":2004,"stem":2005,"children":2006},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[2007,2008,2012,2016,2020,2024],{"title":2003,"path":2004,"stem":2005},{"title":2009,"path":2010,"stem":2011},"MSC51-CPP. Ensure your random number generator is properly seeded","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F2.msc51-cpp",{"title":2013,"path":2014,"stem":2015},"MSC52-CPP. Value-returning functions must return a value from all exit paths","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F3.msc52-cpp",{"title":2017,"path":2018,"stem":2019},"MSC53-CPP. Do not return from a function declared [[noreturn]]","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F4.msc53-cpp",{"title":2021,"path":2022,"stem":2023},"MSC54-CPP. A signal handler must be a plain old function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F5.msc54-cpp",{"title":2025,"path":2026,"stem":2027},"rand() for generating pseudorandom numbers","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers",{"title":2029,"path":2030,"stem":2031,"children":2032},"Object Oriented Programming (OOP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F01.index",[2033,2034,2038,2042,2046,2050,2054,2058,2062,2066],{"title":2029,"path":2030,"stem":2031},{"title":2035,"path":2036,"stem":2037},"OOP50-CPP. Do not invoke virtual functions from constructors or destructors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F02.oop50-cpp",{"title":2039,"path":2040,"stem":2041},"OOP51-CPP. Do not slice derived objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F03.oop51-cpp",{"title":2043,"path":2044,"stem":2045},"OOP52-CPP. Do not delete a polymorphic object without a virtual destructor","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp",{"title":2047,"path":2048,"stem":2049},"OOP53-CPP. Write constructor member initializers in the canonical order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F05.oop53-cpp",{"title":2051,"path":2052,"stem":2053},"OOP54-CPP. Gracefully handle self-copy assignment","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F06.oop54-cpp",{"title":2055,"path":2056,"stem":2057},"OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F07.oop55-cpp",{"title":2059,"path":2060,"stem":2061},"OOP56-CPP. Honor replacement handler requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F08.oop56-cpp",{"title":2063,"path":2064,"stem":2065},"OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F09.oop57-cpp",{"title":2067,"path":2068,"stem":2069},"OOP58-CPP. Copy operations must not mutate the source object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F10.oop58-cpp",{"title":2071,"path":2072,"stem":2073,"children":2074},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[2075,2076,2080,2084,2266,2280],{"title":2071,"path":2072,"stem":2073},{"title":2077,"path":2078,"stem":2079},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":2081,"path":2082,"stem":2083},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":2085,"path":2086,"stem":2087,"children":2088},"CC. Analyzers","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F01.index",[2089,2090,2094,2098,2100,2104,2108,2112,2116,2120,2124,2128,2132,2134,2138,2142,2146,2150,2154,2158,2162,2166,2170,2172,2176,2180,2184,2187,2191,2194,2198,2200,2204,2208,2212,2214,2218,2222,2226,2230,2234,2238,2242,2246,2250,2254,2258,2262],{"title":2085,"path":2086,"stem":2087},{"title":2091,"path":2092,"stem":2093},"Astrée","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":2095,"path":2096,"stem":2097},"Astrée_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F03.astree_v",{"title":1216,"path":1215,"stem":2099},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":2101,"path":2102,"stem":2103},"Axivion Bauhaus Suite_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F05.axivion-bauhaus-suite_v",{"title":2105,"path":2106,"stem":2107},"Clang","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":2109,"path":2110,"stem":2111},"Clang_38_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_38_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F07.clang_38_v",{"title":2113,"path":2114,"stem":2115},"Clang_39_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_39_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F08.clang_39_v",{"title":2117,"path":2118,"stem":2119},"Clang_40_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_40_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F09.clang_40_v",{"title":2121,"path":2122,"stem":2123},"Clang_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F10.clang_v",{"title":2125,"path":2126,"stem":2127},"Codee","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F11.codee",{"title":2129,"path":2130,"stem":2131},"Codee_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F12.codee_v",{"title":1247,"path":1246,"stem":2133},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":2135,"path":2136,"stem":2137},"CodeSonar_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F14.codesonar_v",{"title":2139,"path":2140,"stem":2141},"Coverity","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F15.coverity",{"title":2143,"path":2144,"stem":2145},"Coverity_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F16.coverity_v",{"title":2147,"path":2148,"stem":2149},"ECLAIR","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F17.eclair",{"title":2151,"path":2152,"stem":2153},"ECLAIR_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F18.eclair_v",{"title":2155,"path":2156,"stem":2157},"EDG","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F19.edg",{"title":2159,"path":2160,"stem":2161},"Edg_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F20.edg_v",{"title":2163,"path":2164,"stem":2165},"GCC","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F21.gcc",{"title":2167,"path":2168,"stem":2169},"Gcc_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F22.gcc_v",{"title":1274,"path":1273,"stem":2171},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":2173,"path":2174,"stem":2175},"Helix QAC_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F24.helix-qac_v",{"title":2177,"path":2178,"stem":2179},"Klocwork","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":2181,"path":2182,"stem":2183},"Klocwork_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F26.klocwork_v",{"title":2185,"path":1341,"stem":2186},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":2188,"path":2189,"stem":2190},"Ldra_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F28.ldra_v",{"title":2192,"path":1299,"stem":2193},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":2195,"path":2196,"stem":2197},"Parasoft_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F30.parasoft_v",{"title":1373,"path":1372,"stem":2199},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":2201,"path":2202,"stem":2203},"Polyspace Bug Finder_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F32.polyspace-bug-finder_v",{"title":2205,"path":2206,"stem":2207},"PRQA QA-C++","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F33.prqa-qa-cpp",{"title":2209,"path":2210,"stem":2211},"PRQA QA-C++_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F34.prqa-qa-cpp_v",{"title":1399,"path":1398,"stem":2213},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":2215,"path":2216,"stem":2217},"PVS-Studio_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F36.pvs-studio_v",{"title":2219,"path":2220,"stem":2221},"Rose","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F37.rose",{"title":2223,"path":2224,"stem":2225},"Rose_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F38.rose_v",{"title":2227,"path":2228,"stem":2229},"RuleChecker","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":2231,"path":2232,"stem":2233},"RuleChecker_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F40.rulechecker_v",{"title":2235,"path":2236,"stem":2237},"Security Reviewer - Static Reviewer","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":2239,"path":2240,"stem":2241},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F42.security-reviewer-static-reviewer_v",{"title":2243,"path":2244,"stem":2245},"Semgrep","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F43.semgrep",{"title":2247,"path":2248,"stem":2249},"Semgrep_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F44.semgrep_v",{"title":2251,"path":2252,"stem":2253},"SonarQube C\u002FC++ Plugin","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F45.sonarqube-ccpp-plugin",{"title":2255,"path":2256,"stem":2257},"SonarQube C\u002FC++ Plugin_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F46.sonarqube-ccpp-plugin_v",{"title":2259,"path":2260,"stem":2261},"Splint","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F47.splint",{"title":2263,"path":2264,"stem":2265},"Splint_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F48.splint_v",{"title":2267,"path":2268,"stem":2269,"children":2270},"DD. Related Guidelines","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F1.index",[2271,2272,2276],{"title":2267,"path":2268,"stem":2269},{"title":2273,"path":2274,"stem":2275},"2008","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002F2.2008","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F2.2008",{"title":2277,"path":2278,"stem":2279},"MITRE CWE","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002Fmitre-cwe","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F3.mitre-cwe",{"title":2281,"path":2282,"stem":2283},"EE. Risk Assessments","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fee-risk-assessments","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F6.ee-risk-assessments",{"title":2285,"path":2286,"stem":2287,"children":2288},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2289,2290],{"title":2285,"path":2286,"stem":2287},{"title":2291,"path":2292,"stem":2293},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2295,"path":2296,"stem":2297},"Errata for SEI CERT C++ Coding Standard (2016 Edition)","\u002Fsei-cert-cpp-coding-standard\u002Ferrata-for-sei-cert-cpp-coding-standard-2016-edition","5.sei-cert-cpp-coding-standard\u002F6.errata-for-sei-cert-cpp-coding-standard-2016-edition",1775657779528]