[{"data":1,"prerenderedAt":2200},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp":1489,"sidebar-sei-cert-cpp-coding-standard":1496},[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":1473,"extension":1474,"meta":1475,"navigation":7,"path":1485,"seo":1486,"stem":1487,"__hash__":1488},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp.md","CTR57-CPP. Provide a valid ordering predicate",{"type":32,"value":33,"toc":1462},"minimark",[34,38,48,97,105,110,126,323,327,333,448,451,454,823,826,829,1147,1151,1154,1220,1224,1338,1342,1356,1360,1385,1389,1433,1436,1458],[35,36,30],"h1",{"id":37},"ctr57-cpp-provide-a-valid-ordering-predicate",[39,40,41,42,47],"p",{},"Associative containers place a strict weak ordering requirement on their key comparison predicates [ ",[43,44,46],"a",{"href":45},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ] . A strict weak ordering has the following properties:",[49,50,51,64,81],"ul",{},[52,53,54,55,59,60,63],"li",{},"for all ",[56,57,58],"code",{},"x"," : ",[56,61,62],{},"   x \u003C x == false  "," (irreflexivity)",[52,65,54,66,68,69,72,73,76,77,80],{},[56,67,58],{}," , ",[56,70,71],{},"y"," : if ",[56,74,75],{},"   x \u003C y  ","then",[56,78,79],{},"   !(y \u003C x)  "," (asymmetry)",[52,82,54,83,68,85,68,87,72,90,76,93,96],{},[56,84,58],{},[56,86,71],{},[56,88,89],{},"z",[56,91,92],{},"   x \u003C y && y \u003C z  ",[56,94,95],{},"   x \u003C z  "," (transitivity)",[39,98,99,100,104],{},"Providing an invalid ordering predicate for an associative container (e.g., sets, maps, multisets, and multimaps), or as a comparison criterion with the sorting algorithms, can result in erratic behavior or infinite loops [ ",[43,101,103],{"href":102},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Meyers01","Meyers 01"," ]. When an ordering predicate is required for an associative container or a generic standard template library algorithm, the predicate must meet the requirements for inducing a strict weak ordering.",[106,107,109],"h2",{"id":108},"noncompliant-code-example","Noncompliant Code Example",[39,111,112,113,116,117,120,121,125],{},"In this noncompliant code example, the ",[56,114,115],{},"std::set"," object is created with a comparator that does not adhere to the strict weak ordering requirement. Specifically, it fails to return false for equivalent values. As a result, the behavior of iterating over the results from ",[56,118,119],{},"std::set::equal_range"," results in ",[43,122,124],{"href":123},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-unspecifiedbehavior","unspecified behavior"," .",[127,128,130],"code-block",{"quality":129},"bad",[131,132,137],"pre",{"className":133,"code":134,"language":135,"meta":136,"style":136},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Cfunctional>\n#include \u003Ciostream>\n#include \u003Cset>\n\nvoid f() {\n  std::set\u003Cint, std::less_equal\u003Cint>> s{5, 10, 20};  \n  for (auto r = s.equal_range(10); r.first != r.second; ++r.first) {\n    std::cout \u003C\u003C *r.first \u003C\u003C std::endl;\n  }\n}\n","cpp","",[56,138,139,152,160,168,174,189,241,285,311,317],{"__ignoreMap":136},[140,141,144,148],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"sC2Qs","#include",[140,149,151],{"class":150},"sstjo"," \u003Cfunctional>\n",[140,153,155,157],{"class":142,"line":154},2,[140,156,147],{"class":146},[140,158,159],{"class":150}," \u003Ciostream>\n",[140,161,163,165],{"class":142,"line":162},3,[140,164,147],{"class":146},[140,166,167],{"class":150}," \u003Cset>\n",[140,169,171],{"class":142,"line":170},4,[140,172,173],{"emptyLinePlaceholder":7},"\n",[140,175,177,181,185],{"class":142,"line":176},5,[140,178,180],{"class":179},"sq6CD","void",[140,182,184],{"class":183},"srTi1"," f",[140,186,188],{"class":187},"sMOD_","() {\n",[140,190,192,196,199,202,205,208,211,214,216,218,221,224,228,230,233,235,238],{"class":142,"line":191},6,[140,193,195],{"class":194},"sz2Vg","  std",[140,197,198],{"class":187},"::set",[140,200,201],{"class":146},"\u003C",[140,203,204],{"class":179},"int",[140,206,207],{"class":187},", ",[140,209,210],{"class":194},"std",[140,212,213],{"class":187},"::less_equal",[140,215,201],{"class":146},[140,217,204],{"class":179},[140,219,220],{"class":146},">>",[140,222,223],{"class":187}," s{",[140,225,227],{"class":226},"s7F3e","5",[140,229,207],{"class":187},[140,231,232],{"class":226},"10",[140,234,207],{"class":187},[140,236,237],{"class":226},"20",[140,239,240],{"class":187},"};  \n",[140,242,244,247,250,253,256,259,262,265,268,270,273,276,279,282],{"class":142,"line":243},7,[140,245,246],{"class":146},"  for",[140,248,249],{"class":187}," (",[140,251,252],{"class":179},"auto",[140,254,255],{"class":187}," r ",[140,257,258],{"class":146},"=",[140,260,261],{"class":187}," s.",[140,263,264],{"class":183},"equal_range",[140,266,267],{"class":187},"(",[140,269,232],{"class":226},[140,271,272],{"class":187},"); r.first ",[140,274,275],{"class":146},"!=",[140,277,278],{"class":187}," r.second; ",[140,280,281],{"class":146},"++",[140,283,284],{"class":187},"r.first) {\n",[140,286,288,291,294,297,300,303,305,308],{"class":142,"line":287},8,[140,289,290],{"class":194},"    std",[140,292,293],{"class":187},"::cout ",[140,295,296],{"class":146},"\u003C\u003C",[140,298,299],{"class":146}," *",[140,301,302],{"class":187},"r.first ",[140,304,296],{"class":146},[140,306,307],{"class":194}," std",[140,309,310],{"class":187},"::endl;\n",[140,312,314],{"class":142,"line":313},9,[140,315,316],{"class":187},"  }\n",[140,318,320],{"class":142,"line":319},10,[140,321,322],{"class":187},"}\n",[106,324,326],{"id":325},"compliant-solution","Compliant Solution",[39,328,329,330,332],{},"This compliant solution uses the default comparator with ",[56,331,115],{}," instead of providing an invalid one.",[127,334,336],{"quality":335},"good",[131,337,339],{"className":133,"code":338,"language":135,"meta":136,"style":136},"#include \u003Ciostream>\n#include \u003Cset>\n\nvoid f() {\n  std::set\u003Cint> s{5, 10, 20};  \n  for (auto r = s.equal_range(10); r.first != r.second; ++r.first) {\n    std::cout \u003C\u003C *r.first \u003C\u003C std::endl;\n  }\n}\n",[56,340,341,347,353,357,365,392,422,440,444],{"__ignoreMap":136},[140,342,343,345],{"class":142,"line":143},[140,344,147],{"class":146},[140,346,159],{"class":150},[140,348,349,351],{"class":142,"line":154},[140,350,147],{"class":146},[140,352,167],{"class":150},[140,354,355],{"class":142,"line":162},[140,356,173],{"emptyLinePlaceholder":7},[140,358,359,361,363],{"class":142,"line":170},[140,360,180],{"class":179},[140,362,184],{"class":183},[140,364,188],{"class":187},[140,366,367,369,371,373,375,378,380,382,384,386,388,390],{"class":142,"line":176},[140,368,195],{"class":194},[140,370,198],{"class":187},[140,372,201],{"class":146},[140,374,204],{"class":179},[140,376,377],{"class":146},">",[140,379,223],{"class":187},[140,381,227],{"class":226},[140,383,207],{"class":187},[140,385,232],{"class":226},[140,387,207],{"class":187},[140,389,237],{"class":226},[140,391,240],{"class":187},[140,393,394,396,398,400,402,404,406,408,410,412,414,416,418,420],{"class":142,"line":191},[140,395,246],{"class":146},[140,397,249],{"class":187},[140,399,252],{"class":179},[140,401,255],{"class":187},[140,403,258],{"class":146},[140,405,261],{"class":187},[140,407,264],{"class":183},[140,409,267],{"class":187},[140,411,232],{"class":226},[140,413,272],{"class":187},[140,415,275],{"class":146},[140,417,278],{"class":187},[140,419,281],{"class":146},[140,421,284],{"class":187},[140,423,424,426,428,430,432,434,436,438],{"class":142,"line":243},[140,425,290],{"class":194},[140,427,293],{"class":187},[140,429,296],{"class":146},[140,431,299],{"class":146},[140,433,302],{"class":187},[140,435,296],{"class":146},[140,437,307],{"class":194},[140,439,310],{"class":187},[140,441,442],{"class":142,"line":287},[140,443,316],{"class":187},[140,445,446],{"class":142,"line":313},[140,447,322],{"class":187},[106,449,109],{"id":450},"noncompliant-code-example-1",[39,452,453],{},"In this noncompliant code example, the objects stored in the std::set have an overloaded operator\u003C implementation, allowing the objects to be compared with std::less. However, the comparison operation does not provide a strict weak ordering. Specifically, two sets, x and y, whose i values are both 1, but have differing j values can result in a situation where comp(x, y) and comp(y, x) are both false, failing the asymmetry requirements.",[127,455,456],{"quality":129},[131,457,459],{"className":133,"code":458,"language":135,"meta":136,"style":136},"#include \u003Ciostream>\n#include \u003Cset>\n\nclass S {\n  int i, j;\n\npublic:\n  S(int i, int j) : i(i), j(j) {}\n  \n  friend bool operator\u003C(const S &lhs, const S &rhs) {\n    return lhs.i \u003C rhs.i && lhs.j \u003C rhs.j;\n  }\n  \n  friend std::ostream &operator\u003C\u003C(std::ostream &os, const S& o) {\n    os \u003C\u003C \"i: \" \u003C\u003C o.i \u003C\u003C \", j: \" \u003C\u003C o.j;\n    return os;\n  }\n};\n\nvoid f() {\n  std::set\u003CS> t{S(1, 1), S(1, 2), S(2, 1)};\n  for (auto v : t) {\n    std::cout \u003C\u003C v \u003C\u003C std::endl;\n  }\n}\n",[56,460,461,467,473,477,488,496,500,505,540,545,586,611,616,621,666,693,701,706,712,717,726,783,795,813,818],{"__ignoreMap":136},[140,462,463,465],{"class":142,"line":143},[140,464,147],{"class":146},[140,466,159],{"class":150},[140,468,469,471],{"class":142,"line":154},[140,470,147],{"class":146},[140,472,167],{"class":150},[140,474,475],{"class":142,"line":162},[140,476,173],{"emptyLinePlaceholder":7},[140,478,479,482,485],{"class":142,"line":170},[140,480,481],{"class":179},"class",[140,483,484],{"class":194}," S",[140,486,487],{"class":187}," {\n",[140,489,490,493],{"class":142,"line":176},[140,491,492],{"class":179},"  int",[140,494,495],{"class":187}," i, j;\n",[140,497,498],{"class":142,"line":191},[140,499,173],{"emptyLinePlaceholder":7},[140,501,502],{"class":142,"line":243},[140,503,504],{"class":179},"public:\n",[140,506,507,510,512,514,518,520,522,525,528,531,534,537],{"class":142,"line":287},[140,508,509],{"class":183},"  S",[140,511,267],{"class":187},[140,513,204],{"class":179},[140,515,517],{"class":516},"sTHNf"," i",[140,519,207],{"class":187},[140,521,204],{"class":179},[140,523,524],{"class":516}," j",[140,526,527],{"class":187},") : ",[140,529,530],{"class":183},"i",[140,532,533],{"class":187},"(i), ",[140,535,536],{"class":183},"j",[140,538,539],{"class":187},"(j) {}\n",[140,541,542],{"class":142,"line":313},[140,543,544],{"class":187},"  \n",[140,546,547,550,553,556,559,561,564,566,569,572,574,576,578,580,583],{"class":142,"line":319},[140,548,549],{"class":146},"  friend",[140,551,552],{"class":179}," bool",[140,554,555],{"class":146}," operator",[140,557,201],{"class":558},"s_OQ2",[140,560,267],{"class":187},[140,562,563],{"class":146},"const",[140,565,484],{"class":194},[140,567,568],{"class":146}," &",[140,570,571],{"class":516},"lhs",[140,573,207],{"class":187},[140,575,563],{"class":146},[140,577,484],{"class":194},[140,579,568],{"class":146},[140,581,582],{"class":516},"rhs",[140,584,585],{"class":187},") {\n",[140,587,589,592,595,597,600,603,606,608],{"class":142,"line":588},11,[140,590,591],{"class":146},"    return",[140,593,594],{"class":187}," lhs.i ",[140,596,201],{"class":146},[140,598,599],{"class":187}," rhs.i ",[140,601,602],{"class":146},"&&",[140,604,605],{"class":187}," lhs.j ",[140,607,201],{"class":146},[140,609,610],{"class":187}," rhs.j;\n",[140,612,614],{"class":142,"line":613},12,[140,615,316],{"class":187},[140,617,619],{"class":142,"line":618},13,[140,620,544],{"class":187},[140,622,624,626,628,631,634,637,639,641,643,645,647,649,652,654,656,658,661,664],{"class":142,"line":623},14,[140,625,549],{"class":146},[140,627,307],{"class":194},[140,629,630],{"class":187},"::",[140,632,633],{"class":194},"ostream",[140,635,636],{"class":146}," &operator",[140,638,296],{"class":558},[140,640,267],{"class":187},[140,642,210],{"class":194},[140,644,630],{"class":187},[140,646,633],{"class":194},[140,648,568],{"class":146},[140,650,651],{"class":516},"os",[140,653,207],{"class":187},[140,655,563],{"class":146},[140,657,484],{"class":194},[140,659,660],{"class":146},"&",[140,662,663],{"class":516}," o",[140,665,585],{"class":187},[140,667,669,672,674,677,680,683,685,688,690],{"class":142,"line":668},15,[140,670,671],{"class":187},"    os ",[140,673,296],{"class":146},[140,675,676],{"class":150}," \"i: \"",[140,678,679],{"class":146}," \u003C\u003C",[140,681,682],{"class":187}," o.i ",[140,684,296],{"class":146},[140,686,687],{"class":150}," \", j: \"",[140,689,679],{"class":146},[140,691,692],{"class":187}," o.j;\n",[140,694,696,698],{"class":142,"line":695},16,[140,697,591],{"class":146},[140,699,700],{"class":187}," os;\n",[140,702,704],{"class":142,"line":703},17,[140,705,316],{"class":187},[140,707,709],{"class":142,"line":708},18,[140,710,711],{"class":187},"};\n",[140,713,715],{"class":142,"line":714},19,[140,716,173],{"emptyLinePlaceholder":7},[140,718,720,722,724],{"class":142,"line":719},20,[140,721,180],{"class":179},[140,723,184],{"class":183},[140,725,188],{"class":187},[140,727,729,731,733,735,738,740,743,745,747,750,752,754,757,759,761,763,765,768,770,772,774,776,778,780],{"class":142,"line":728},21,[140,730,195],{"class":194},[140,732,198],{"class":187},[140,734,201],{"class":146},[140,736,737],{"class":187},"S",[140,739,377],{"class":146},[140,741,742],{"class":187}," t{",[140,744,737],{"class":183},[140,746,267],{"class":187},[140,748,749],{"class":226},"1",[140,751,207],{"class":187},[140,753,749],{"class":226},[140,755,756],{"class":187},"), ",[140,758,737],{"class":183},[140,760,267],{"class":187},[140,762,749],{"class":226},[140,764,207],{"class":187},[140,766,767],{"class":226},"2",[140,769,756],{"class":187},[140,771,737],{"class":183},[140,773,267],{"class":187},[140,775,767],{"class":226},[140,777,207],{"class":187},[140,779,749],{"class":226},[140,781,782],{"class":187},")};\n",[140,784,786,788,790,792],{"class":142,"line":785},22,[140,787,246],{"class":146},[140,789,249],{"class":187},[140,791,252],{"class":179},[140,793,794],{"class":187}," v : t) {\n",[140,796,798,800,802,804,807,809,811],{"class":142,"line":797},23,[140,799,290],{"class":194},[140,801,293],{"class":187},[140,803,296],{"class":146},[140,805,806],{"class":187}," v ",[140,808,296],{"class":146},[140,810,307],{"class":194},[140,812,310],{"class":187},[140,814,816],{"class":142,"line":815},24,[140,817,316],{"class":187},[140,819,821],{"class":142,"line":820},25,[140,822,322],{"class":187},[106,824,326],{"id":825},"compliant-solution-1",[39,827,828],{},"This compliant solution uses std::tie() to properly implement the strict weak ordering operator\u003C predicate.",[127,830,831],{"quality":335},[131,832,834],{"className":133,"code":833,"language":135,"meta":136,"style":136},"#include \u003Ciostream>\n#include \u003Cset>\n#include \u003Ctuple>\n \nclass S {\n  int i, j;\n \npublic:\n  S(int i, int j) : i(i), j(j) {}\n  \n  friend bool operator\u003C(const S &lhs, const S &rhs) {\n    return std::tie(lhs.i, lhs.j) \u003C std::tie(rhs.i, rhs.j);\n  }\n  \n  friend std::ostream &operator\u003C\u003C(std::ostream &os, const S& o) {\n    os \u003C\u003C \"i: \" \u003C\u003C o.i \u003C\u003C \", j: \" \u003C\u003C o.j;\n    return os;\n  }\n};\n\nvoid f() {\n  std::set\u003CS> t{S(1, 1), S(1, 2), S(2, 1)};  \n  for (auto v : t) {\n    std::cout \u003C\u003C v \u003C\u003C std::endl;\n  }\n}\n",[56,835,836,842,848,855,860,868,874,878,882,908,912,944,969,973,977,1015,1035,1041,1045,1049,1053,1061,1112,1122,1138,1142],{"__ignoreMap":136},[140,837,838,840],{"class":142,"line":143},[140,839,147],{"class":146},[140,841,159],{"class":150},[140,843,844,846],{"class":142,"line":154},[140,845,147],{"class":146},[140,847,167],{"class":150},[140,849,850,852],{"class":142,"line":162},[140,851,147],{"class":146},[140,853,854],{"class":150}," \u003Ctuple>\n",[140,856,857],{"class":142,"line":170},[140,858,859],{"class":187}," \n",[140,861,862,864,866],{"class":142,"line":176},[140,863,481],{"class":179},[140,865,484],{"class":194},[140,867,487],{"class":187},[140,869,870,872],{"class":142,"line":191},[140,871,492],{"class":179},[140,873,495],{"class":187},[140,875,876],{"class":142,"line":243},[140,877,859],{"class":187},[140,879,880],{"class":142,"line":287},[140,881,504],{"class":179},[140,883,884,886,888,890,892,894,896,898,900,902,904,906],{"class":142,"line":313},[140,885,509],{"class":183},[140,887,267],{"class":187},[140,889,204],{"class":179},[140,891,517],{"class":516},[140,893,207],{"class":187},[140,895,204],{"class":179},[140,897,524],{"class":516},[140,899,527],{"class":187},[140,901,530],{"class":183},[140,903,533],{"class":187},[140,905,536],{"class":183},[140,907,539],{"class":187},[140,909,910],{"class":142,"line":319},[140,911,544],{"class":187},[140,913,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942],{"class":142,"line":588},[140,915,549],{"class":146},[140,917,552],{"class":179},[140,919,555],{"class":146},[140,921,201],{"class":558},[140,923,267],{"class":187},[140,925,563],{"class":146},[140,927,484],{"class":194},[140,929,568],{"class":146},[140,931,571],{"class":516},[140,933,207],{"class":187},[140,935,563],{"class":146},[140,937,484],{"class":194},[140,939,568],{"class":146},[140,941,582],{"class":516},[140,943,585],{"class":187},[140,945,946,948,950,952,955,958,960,962,964,966],{"class":142,"line":613},[140,947,591],{"class":146},[140,949,307],{"class":194},[140,951,630],{"class":187},[140,953,954],{"class":183},"tie",[140,956,957],{"class":187},"(lhs.i, lhs.j) ",[140,959,201],{"class":146},[140,961,307],{"class":194},[140,963,630],{"class":187},[140,965,954],{"class":183},[140,967,968],{"class":187},"(rhs.i, rhs.j);\n",[140,970,971],{"class":142,"line":618},[140,972,316],{"class":187},[140,974,975],{"class":142,"line":623},[140,976,544],{"class":187},[140,978,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013],{"class":142,"line":668},[140,980,549],{"class":146},[140,982,307],{"class":194},[140,984,630],{"class":187},[140,986,633],{"class":194},[140,988,636],{"class":146},[140,990,296],{"class":558},[140,992,267],{"class":187},[140,994,210],{"class":194},[140,996,630],{"class":187},[140,998,633],{"class":194},[140,1000,568],{"class":146},[140,1002,651],{"class":516},[140,1004,207],{"class":187},[140,1006,563],{"class":146},[140,1008,484],{"class":194},[140,1010,660],{"class":146},[140,1012,663],{"class":516},[140,1014,585],{"class":187},[140,1016,1017,1019,1021,1023,1025,1027,1029,1031,1033],{"class":142,"line":695},[140,1018,671],{"class":187},[140,1020,296],{"class":146},[140,1022,676],{"class":150},[140,1024,679],{"class":146},[140,1026,682],{"class":187},[140,1028,296],{"class":146},[140,1030,687],{"class":150},[140,1032,679],{"class":146},[140,1034,692],{"class":187},[140,1036,1037,1039],{"class":142,"line":703},[140,1038,591],{"class":146},[140,1040,700],{"class":187},[140,1042,1043],{"class":142,"line":708},[140,1044,316],{"class":187},[140,1046,1047],{"class":142,"line":714},[140,1048,711],{"class":187},[140,1050,1051],{"class":142,"line":719},[140,1052,173],{"emptyLinePlaceholder":7},[140,1054,1055,1057,1059],{"class":142,"line":728},[140,1056,180],{"class":179},[140,1058,184],{"class":183},[140,1060,188],{"class":187},[140,1062,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109],{"class":142,"line":785},[140,1064,195],{"class":194},[140,1066,198],{"class":187},[140,1068,201],{"class":146},[140,1070,737],{"class":187},[140,1072,377],{"class":146},[140,1074,742],{"class":187},[140,1076,737],{"class":183},[140,1078,267],{"class":187},[140,1080,749],{"class":226},[140,1082,207],{"class":187},[140,1084,749],{"class":226},[140,1086,756],{"class":187},[140,1088,737],{"class":183},[140,1090,267],{"class":187},[140,1092,749],{"class":226},[140,1094,207],{"class":187},[140,1096,767],{"class":226},[140,1098,756],{"class":187},[140,1100,737],{"class":183},[140,1102,267],{"class":187},[140,1104,767],{"class":226},[140,1106,207],{"class":187},[140,1108,749],{"class":226},[140,1110,1111],{"class":187},")};  \n",[140,1113,1114,1116,1118,1120],{"class":142,"line":797},[140,1115,246],{"class":146},[140,1117,249],{"class":187},[140,1119,252],{"class":179},[140,1121,794],{"class":187},[140,1123,1124,1126,1128,1130,1132,1134,1136],{"class":142,"line":815},[140,1125,290],{"class":194},[140,1127,293],{"class":187},[140,1129,296],{"class":146},[140,1131,806],{"class":187},[140,1133,296],{"class":146},[140,1135,307],{"class":194},[140,1137,310],{"class":187},[140,1139,1140],{"class":142,"line":820},[140,1141,316],{"class":187},[140,1143,1145],{"class":142,"line":1144},26,[140,1146,322],{"class":187},[106,1148,1150],{"id":1149},"risk-assessment","Risk Assessment",[39,1152,1153],{},"Using an invalid ordering rule can lead to erratic behavior or infinite loops.",[1155,1156,1157,1158,1157,1188],"table",{},"\n  ",[1159,1160,1161,1162,1157],"thead",{},"\n    ",[1163,1164,1165,1166,1165,1170,1165,1173,1165,1176,1165,1179,1165,1182,1165,1185,1161],"tr",{},"\n      ",[1167,1168,1169],"th",{},"Rule",[1167,1171,1172],{},"Severity",[1167,1174,1175],{},"Likelihood",[1167,1177,1178],{},"Detectable",[1167,1180,1181],{},"Repairable",[1167,1183,1184],{},"Priority",[1167,1186,1187],{},"Level",[1189,1190,1161,1191,1157],"tbody",{},[1163,1192,1165,1193,1165,1197,1165,1200,1165,1203,1165,1206,1165,1208,1165,1215,1161],{},[1194,1195,1196],"td",{},"CTR57-CPP",[1194,1198,1199],{},"Low",[1194,1201,1202],{},"Probable",[1194,1204,1205],{},"No",[1194,1207,1205],{},[1194,1209,1211],{"style":1210},"color: #27ae60;",[1212,1213,1214],"b",{},"P2",[1194,1216,1217],{"style":1210},[1212,1218,1219],{},"L3",[106,1221,1223],{"id":1222},"automated-detection","Automated Detection",[1155,1225,1228],{"className":1226},[1227],"wrapped",[1189,1229,1230,1254,1285,1312],{},[1163,1231,1234,1239,1244,1249],{"className":1232},[1233],"header",[1167,1235,1236],{},[39,1237,1238],{},"Tool",[1167,1240,1241],{},[39,1242,1243],{},"Version",[1167,1245,1246],{},[39,1247,1248],{},"Checker",[1167,1250,1251],{},[39,1252,1253],{},"Description",[1163,1255,1258,1264,1274,1280],{"className":1256},[1257],"odd",[1194,1259,1260],{},[43,1261,1263],{"href":1262},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[1194,1265,1266],{},[1267,1268,1271],"div",{"className":1269},[1270],"content-wrapper",[39,1272,1273],{},"2025.2",[1194,1275,1276],{},[1277,1278,1279],"strong",{},"C++3293",[1194,1281,1282],{},[1283,1284],"br",{},[1163,1286,1289,1295,1302,1307],{"className":1287},[1288],"even",[1194,1290,1291],{},[43,1292,1294],{"href":1293},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[1194,1296,1297],{},[1267,1298,1300],{"className":1299},[1270],[39,1301,1273],{},[1194,1303,1304],{},[1277,1305,1306],{},"CERT_CPP-CTR57-a",[1194,1308,1309],{},[39,1310,1311],{},"For associative containers never use comparison function returning true for equal values",[1163,1313,1315,1321,1329,1335],{"className":1314},[1257],[1194,1316,1317],{},[43,1318,1320],{"href":1319},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[1194,1322,1323],{},[1267,1324,1326],{"className":1325},[1270],[39,1327,1328],{},"R2025b",[1194,1330,1331],{},[43,1332,1334],{"href":1333},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcctr57cpp.html","CERT C++: CTR57-CPP",[1194,1336,1337],{},"Checks for predicate lacking strict weak ordering (rule partially covered).",[106,1339,1341],{"id":1340},"related-vulnerabilities","Related Vulnerabilities",[39,1343,1344,1345,1349,1350,125],{},"Search for ",[43,1346,1348],{"href":1347},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vul","vulnerabilities"," resulting from the violation of this rule on the ",[43,1351,1355],{"href":1352,"rel":1353},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+CTR40-CPP",[1354],"nofollow","CERT website",[106,1357,1359],{"id":1358},"related-guidelines","Related Guidelines",[1155,1361,1362,1370],{},[1159,1363,1364],{},[1163,1365,1366,1368],{},[1167,1367],{},[1167,1369],{},[1189,1371,1372],{},[1163,1373,1374,1379],{},[1194,1375,1376],{},[43,1377,1378],{"href":23},"SEI CERT Oracle Coding Standard for Java",[1194,1380,1381],{},[43,1382,1384],{"href":1383},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Fmethods-met\u002Fmet10-j","MET10-J. Follow the general contract when implementing the compareTo() method",[106,1386,1388],{"id":1387},"bibliography","Bibliography",[1155,1390,1391,1399],{},[1159,1392,1393],{},[1163,1394,1395,1397],{},[1167,1396],{},[1167,1398],{},[1189,1400,1401,1412,1422],{},[1163,1402,1403,1409],{},[1194,1404,1405,1406,1408],{},"[ ",[43,1407,46],{"href":45}," ]",[1194,1410,1411],{},"Subclause 23.2.4, \"Associative Containers\"",[1163,1413,1414,1419],{},[1194,1415,1405,1416,1408],{},[43,1417,1418],{"href":102},"Meyers 2001",[1194,1420,1421],{},"Item 21, \"Always Have Comparison Functions Return False for Equal Values\"",[1163,1423,1424,1430],{},[1194,1425,1405,1426,1408],{},[43,1427,1429],{"href":1428},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Sutter04","Sutter 2004",[1194,1431,1432],{},"Item 83, \"Use a Checked STL Implementation\"",[1434,1435],"hr",{},[39,1437,1438,1445,1446,1445,1452],{},[43,1439,1441],{"href":1440},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp",[1442,1443],"img",{"src":1444},"\u002Fattachments\u002F88046682\u002F88480621.png"," ",[43,1447,1449],{"href":1448},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002F",[1442,1450],{"src":1451},"\u002Fattachments\u002F88046682\u002F88475556.png",[43,1453,1455],{"href":1454},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp",[1442,1456],{"src":1457},"\u002Fattachments\u002F88046682\u002F88475555.png",[1459,1460,1461],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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 .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}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 .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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 .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 .s_OQ2, html code.shiki .s_OQ2{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#F8F8F2}",{"title":136,"searchDepth":154,"depth":154,"links":1463},[1464,1465,1466,1467,1468,1469,1470,1471,1472],{"id":108,"depth":154,"text":109},{"id":325,"depth":154,"text":326},{"id":450,"depth":154,"text":109},{"id":825,"depth":154,"text":326},{"id":1149,"depth":154,"text":1150},{"id":1222,"depth":154,"text":1223},{"id":1340,"depth":154,"text":1341},{"id":1358,"depth":154,"text":1359},{"id":1387,"depth":154,"text":1388},"Associative containers place a strict weak ordering requirement on their key comparison predicates [ ISO\u002FIEC 14882-2014 ] . A strict weak ordering has the following properties:","md",{"tags":1476},[1477,1478,1479,1480,1481,1482,1483,1484],"review","ctr","review-dms","rule","nptc-complexity","review-ajb","no-autodetect","nptc","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp",{"title":30,"description":1473},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp","e-I2ZNNqUu6wWpxoB9ofhDtRI4eWx8z8NbHxzD0oT_M",[1490,1493],{"title":1491,"path":1440,"stem":1492,"children":-1},"CTR56-CPP. Do not use pointer arithmetic on polymorphic objects","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp",{"title":1494,"path":1454,"stem":1495,"children":-1},"CTR58-CPP. Predicate function objects should not be mutable","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",[1497],{"title":1498,"path":1499,"stem":1500,"children":1501},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1502,1503,1570,1965,2186,2196],{"title":1498,"path":1499,"stem":1500},{"title":1504,"path":1505,"stem":1506,"children":1507},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1508,1509],{"title":1504,"path":1505,"stem":1506},{"title":1510,"path":1511,"stem":1512,"children":1513},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1514,1515,1519,1523,1527,1531,1535,1539,1543,1547,1551,1555,1559,1563,1567],{"title":1510,"path":1511,"stem":1512},{"title":1516,"path":1517,"stem":1518},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1520,"path":1521,"stem":1522},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1524,"path":1525,"stem":1526},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1528,"path":1529,"stem":1530},"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":1532,"path":1533,"stem":1534},"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":1536,"path":1537,"stem":1538},"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":1540,"path":1541,"stem":1542},"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":1544,"path":1545,"stem":1546},"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":1548,"path":1549,"stem":1550},"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":1552,"path":1553,"stem":1554},"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":1556,"path":1557,"stem":1558},"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":1560,"path":1561,"stem":1562},"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":1564,"path":1565,"stem":1566},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":1223,"path":1568,"stem":1569},"\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":1571,"path":1572,"stem":1573,"children":1574},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1575,1576,1598,1632,1665,1715,1773,1835,1849,1859,1897,1923],{"title":1571,"path":1572,"stem":1573},{"title":1577,"path":1578,"stem":1579,"children":1580},"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",[1581,1582,1586,1590,1594],{"title":1577,"path":1578,"stem":1579},{"title":1583,"path":1584,"stem":1585},"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":1587,"path":1588,"stem":1589},"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":1591,"path":1592,"stem":1593},"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":1595,"path":1596,"stem":1597},"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":1599,"path":1600,"stem":1601,"children":1602},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1603,1604,1608,1612,1616,1620,1624,1628],{"title":1599,"path":1600,"stem":1601},{"title":1605,"path":1606,"stem":1607},"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":1609,"path":1610,"stem":1611},"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":1613,"path":1614,"stem":1615},"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":1617,"path":1618,"stem":1619},"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":1621,"path":1622,"stem":1623},"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":1625,"path":1626,"stem":1627},"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":1629,"path":1630,"stem":1631},"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":1633,"path":1634,"stem":1635,"children":1636},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1637,1638,1642,1646,1650,1654,1658,1662,1663,1664],{"title":1633,"path":1634,"stem":1635},{"title":1639,"path":1640,"stem":1641},"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":1643,"path":1644,"stem":1645},"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":1647,"path":1648,"stem":1649},"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":1651,"path":1652,"stem":1653},"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":1655,"path":1656,"stem":1657},"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":1659,"path":1660,"stem":1661},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",{"title":1491,"path":1440,"stem":1492},{"title":30,"path":1485,"stem":1487},{"title":1494,"path":1454,"stem":1495},{"title":1666,"path":1667,"stem":1668,"children":1669},"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",[1670,1671,1675,1679,1683,1687,1691,1695,1699,1703,1707,1711],{"title":1666,"path":1667,"stem":1668},{"title":1672,"path":1673,"stem":1674},"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":1676,"path":1677,"stem":1678},"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":1680,"path":1681,"stem":1682},"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":1684,"path":1685,"stem":1686},"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":1688,"path":1689,"stem":1690},"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":1692,"path":1693,"stem":1694},"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":1696,"path":1697,"stem":1698},"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":1700,"path":1701,"stem":1702},"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":1704,"path":1705,"stem":1706},"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":1708,"path":1709,"stem":1710},"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":1712,"path":1713,"stem":1714},"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":1716,"path":1717,"stem":1718,"children":1719},"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",[1720,1721,1725,1729,1733,1737,1741,1745,1749,1753,1757,1761,1765,1769],{"title":1716,"path":1717,"stem":1718},{"title":1722,"path":1723,"stem":1724},"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":1726,"path":1727,"stem":1728},"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":1730,"path":1731,"stem":1732},"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":1734,"path":1735,"stem":1736},"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":1738,"path":1739,"stem":1740},"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":1742,"path":1743,"stem":1744},"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":1746,"path":1747,"stem":1748},"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":1750,"path":1751,"stem":1752},"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":1754,"path":1755,"stem":1756},"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":1758,"path":1759,"stem":1760},"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":1762,"path":1763,"stem":1764},"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":1766,"path":1767,"stem":1768},"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":1770,"path":1771,"stem":1772},"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":1774,"path":1775,"stem":1776,"children":1777},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1778,1779,1783,1787,1791,1795,1799,1803,1807,1811,1815,1819,1823,1827,1831],{"title":1774,"path":1775,"stem":1776},{"title":1780,"path":1781,"stem":1782},"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":1784,"path":1785,"stem":1786},"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":1788,"path":1789,"stem":1790},"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":1792,"path":1793,"stem":1794},"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":1796,"path":1797,"stem":1798},"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":1800,"path":1801,"stem":1802},"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":1804,"path":1805,"stem":1806},"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":1808,"path":1809,"stem":1810},"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":1812,"path":1813,"stem":1814},"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":1816,"path":1817,"stem":1818},"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":1820,"path":1821,"stem":1822},"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":1824,"path":1825,"stem":1826},"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":1828,"path":1829,"stem":1830},"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":1832,"path":1833,"stem":1834},"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":1836,"path":1837,"stem":1838,"children":1839},"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",[1840,1841,1845],{"title":1836,"path":1837,"stem":1838},{"title":1842,"path":1843,"stem":1844},"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":1846,"path":1847,"stem":1848},"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":1850,"path":1851,"stem":1852,"children":1853},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1854,1855],{"title":1850,"path":1851,"stem":1852},{"title":1856,"path":1857,"stem":1858},"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":1860,"path":1861,"stem":1862,"children":1863},"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",[1864,1865,1869,1873,1877,1881,1885,1889,1893],{"title":1860,"path":1861,"stem":1862},{"title":1866,"path":1867,"stem":1868},"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":1870,"path":1871,"stem":1872},"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":1874,"path":1875,"stem":1876},"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":1878,"path":1879,"stem":1880},"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":1882,"path":1883,"stem":1884},"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":1886,"path":1887,"stem":1888},"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":1890,"path":1891,"stem":1892},"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":1894,"path":1895,"stem":1896},"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":1898,"path":1899,"stem":1900,"children":1901},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1902,1903,1907,1911,1915,1919],{"title":1898,"path":1899,"stem":1900},{"title":1904,"path":1905,"stem":1906},"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":1908,"path":1909,"stem":1910},"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":1912,"path":1913,"stem":1914},"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":1916,"path":1917,"stem":1918},"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":1920,"path":1921,"stem":1922},"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":1924,"path":1925,"stem":1926,"children":1927},"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",[1928,1929,1933,1937,1941,1945,1949,1953,1957,1961],{"title":1924,"path":1925,"stem":1926},{"title":1930,"path":1931,"stem":1932},"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":1934,"path":1935,"stem":1936},"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":1938,"path":1939,"stem":1940},"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":1942,"path":1943,"stem":1944},"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":1946,"path":1947,"stem":1948},"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":1950,"path":1951,"stem":1952},"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":1954,"path":1955,"stem":1956},"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":1958,"path":1959,"stem":1960},"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":1962,"path":1963,"stem":1964},"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":1966,"path":1967,"stem":1968,"children":1969},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1970,1971,1975,1979,2168,2182],{"title":1966,"path":1967,"stem":1968},{"title":1972,"path":1973,"stem":1974},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1976,"path":1977,"stem":1978},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1980,"path":1981,"stem":1982,"children":1983},"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",[1984,1985,1989,1993,1997,2001,2005,2009,2013,2017,2021,2025,2029,2033,2037,2041,2045,2049,2053,2057,2061,2065,2069,2071,2075,2079,2083,2087,2091,2094,2098,2100,2104,2108,2112,2116,2120,2124,2128,2132,2136,2140,2144,2148,2152,2156,2160,2164],{"title":1980,"path":1981,"stem":1982},{"title":1986,"path":1987,"stem":1988},"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":1990,"path":1991,"stem":1992},"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":1994,"path":1995,"stem":1996},"Axivion Bauhaus Suite","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":1998,"path":1999,"stem":2000},"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":2002,"path":2003,"stem":2004},"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":2006,"path":2007,"stem":2008},"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":2010,"path":2011,"stem":2012},"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":2014,"path":2015,"stem":2016},"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":2018,"path":2019,"stem":2020},"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":2022,"path":2023,"stem":2024},"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":2026,"path":2027,"stem":2028},"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":2030,"path":2031,"stem":2032},"CodeSonar","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":2034,"path":2035,"stem":2036},"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":2038,"path":2039,"stem":2040},"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":2042,"path":2043,"stem":2044},"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":2046,"path":2047,"stem":2048},"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":2050,"path":2051,"stem":2052},"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":2054,"path":2055,"stem":2056},"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":2058,"path":2059,"stem":2060},"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":2062,"path":2063,"stem":2064},"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":2066,"path":2067,"stem":2068},"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":1263,"path":1262,"stem":2070},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":2072,"path":2073,"stem":2074},"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":2076,"path":2077,"stem":2078},"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":2080,"path":2081,"stem":2082},"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":2084,"path":2085,"stem":2086},"LDRA","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":2088,"path":2089,"stem":2090},"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":2092,"path":1293,"stem":2093},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":2095,"path":2096,"stem":2097},"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":1320,"path":1319,"stem":2099},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":2101,"path":2102,"stem":2103},"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":2105,"path":2106,"stem":2107},"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":2109,"path":2110,"stem":2111},"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":2113,"path":2114,"stem":2115},"PVS-Studio","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":2117,"path":2118,"stem":2119},"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":2121,"path":2122,"stem":2123},"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":2125,"path":2126,"stem":2127},"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":2129,"path":2130,"stem":2131},"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":2133,"path":2134,"stem":2135},"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":2137,"path":2138,"stem":2139},"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":2141,"path":2142,"stem":2143},"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":2145,"path":2146,"stem":2147},"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":2149,"path":2150,"stem":2151},"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":2153,"path":2154,"stem":2155},"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":2157,"path":2158,"stem":2159},"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":2161,"path":2162,"stem":2163},"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":2165,"path":2166,"stem":2167},"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":2169,"path":2170,"stem":2171,"children":2172},"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",[2173,2174,2178],{"title":2169,"path":2170,"stem":2171},{"title":2175,"path":2176,"stem":2177},"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":2179,"path":2180,"stem":2181},"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":2183,"path":2184,"stem":2185},"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":2187,"path":2188,"stem":2189,"children":2190},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2191,2192],{"title":2187,"path":2188,"stem":2189},{"title":2193,"path":2194,"stem":2195},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2197,"path":2198,"stem":2199},"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",1775657779529]