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