[{"data":1,"prerenderedAt":1990},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp":1290,"sidebar-sei-cert-cpp-coding-standard":1297},[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":1272,"extension":1273,"meta":1274,"navigation":7,"path":1286,"seo":1287,"stem":1288,"__hash__":1289},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp.md","ERR56-CPP. Guarantee exception safety",{"type":32,"value":33,"toc":1263},"minimark",[34,38,61,69,72,156,159,167,172,177,205,542,547,551,564,798,802,805,865,869,1088,1092,1101,1105,1154,1158,1235,1238,1259],[35,36,30],"h1",{"id":37},"err56-cpp-guarantee-exception-safety",[39,40,41,42,46,47,50,51,54,55,60],"p",{},"Proper handling of errors and exceptional situations is essential for the continued correct operation of software. The preferred mechanism for reporting errors in a C++ program is exceptions rather than error codes. A number of core language facilities, including ",[43,44,45],"code",{},"dynamic_cast"," , ",[43,48,49],{},"  operator new() "," , and ",[43,52,53],{},"typeid"," , report failures by throwing exceptions. In addition, the C++ standard library makes heavy use of exceptions to report several different kinds of failures. Few C++ programs manage to avoid using some of these facilities. Consequently, the vast majority of C++ programs must be prepared for exceptions to occur and must handle each appropriately. (See ",[56,57,59],"a",{"href":58},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr51-cpp","ERR51-CPP. Handle all exceptions"," .)",[39,62,63,64,68],{},"Because exceptions introduce code paths into a program, it is important to consider the effects of code taking such paths and to avoid any undesirable effects that might arise otherwise. Some such effects include failure to release an acquired resource, thereby introducing a leak, and failure to reestablish a class invariant after a partial update to an object or even a partial object update while maintaining all invariants. Code that avoids any such undesirable effects is said to be ",[56,65,67],{"href":66},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-exceptionsafety","exception safe"," .",[39,70,71],{},"Based on the preceding effects, the following table distinguishes three kinds of exception safety guarantees from most to least desired.",[73,74,75,88],"table",{},[76,77,78],"thead",{},[79,80,81,84,86],"tr",{},[82,83],"th",{},[82,85],{},[82,87],{},[89,90,91,103,123,138],"tbody",{},[79,92,93,97,100],{},[94,95,96],"td",{},"Guarantee",[94,98,99],{},"Description",[94,101,102],{},"Example",[79,104,105,114,117],{},[94,106,107],{},[108,109,110],"em",{},[111,112,113],"strong",{},"Strong",[94,115,116],{},"The strong exception safety guarantee is a property of an operation such that, in addition to satisfying the basic exception safety guarantee, if the operation terminates by raising an exception, it has no observable effects on program state.",[94,118,119],{},[56,120,122],{"href":121},"#ERR56CPP.Guaranteeexceptionsafety-StrongExceptionSafety","Strong Exception Safety",[79,124,125,132,135],{},[94,126,127],{},[108,128,129],{},[111,130,131],{},"Basic",[94,133,134],{},"The basic exception safety guarantee is a property of an operation such that, if the operation terminates by raising an exception, it preserves program state invariants and prevents resource leaks.",[94,136,137],{},"Basic Exception Safety",[79,139,140,147,150],{},[94,141,142],{},[108,143,144],{},[111,145,146],{},"None",[94,148,149],{},"Code that provides neither the strong nor basic exception safety guarantee is not exception safe.",[94,151,152],{},[56,153,155],{"href":154},"#ERR56CPP.Guaranteeexceptionsafety-NoExceptionSafety","No Exception Safety",[39,157,158],{},"Code that guarantees strong exception safety also guarantees basic exception safety.",[39,160,161,162,166],{},"Because all exceptions thrown in an application must be handled, in compliance with ",[56,163,165],{"href":164},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr50-cpp","ERR50-CPP. Do not abruptly terminate the program"," , it is critical that thrown exceptions do not leave the program in an indeterminate state where invariants are violated. That is, the program must provide basic exception safety for all invariants and may choose to provide strong exception safety for some invariants. Whether exception handling is used to control the termination of the program or to recover from an exceptional situation, a violated invariant leaves the program in a state where graceful continued execution is likely to introduce security vulnerabilities. Thus, code that provides no exception safety guarantee is unsafe and must be considered defective.",[39,168,169],{},[56,170],{"id":171},"ERR56CPP.Guaranteeexceptionsafety-NoExceptionSafety",[173,174,176],"h2",{"id":175},"noncompliant-code-example-no-exception-safety","Noncompliant Code Example (No Exception Safety)",[39,178,179,180,183,184,187,188,190,191,193,194,196,197,200,201,68],{},"The following noncompliant code example shows a flawed copy assignment operator. The implicit invariants of the class are that the ",[43,181,182],{},"array"," member is a valid (possibly null) pointer and that the ",[43,185,186],{},"nElems"," member stores the number of elements in the array pointed to by ",[43,189,182],{}," . The function deallocates ",[43,192,182],{}," and assigns the element counter, ",[43,195,186],{}," , before allocating a new block of memory for the copy. As a result, if the ",[43,198,199],{},"new"," expression throws an exception, the function will have modified the state of both member variables in a way that violates the implicit invariants of the class. Consequently, such an object is in an indeterminate state and any operation on it, including its destruction, results in ",[56,202,204],{"href":203},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior",[206,207,209],"code-block",{"quality":208},"bad",[210,211,216],"pre",{"className":212,"code":213,"language":214,"meta":215,"style":215},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Ccstring>\n \nclass IntArray {\n  int *array;\n  std::size_t nElems;\npublic:\n  \u002F\u002F ...\n\n  ~IntArray() {\n    delete[] array;\n  }\n\n \n  IntArray(const IntArray& that); \u002F\u002F nontrivial copy constructor\n  IntArray& operator=(const IntArray &rhs) {\n    if (this != &rhs) {\n      delete[] array;\n      array = nullptr;\n      nElems = rhs.nElems;\n      if (nElems) {\n        array = new int[nElems];\n        std::memcpy(array, rhs.array, nElems * sizeof(*array));\n      }\n    }\n    return *this;\n  }\n\n  \u002F\u002F ...\n};\n","cpp","",[43,217,218,231,238,252,264,279,285,292,298,308,317,323,328,333,360,389,410,418,433,444,453,470,497,503,509,521,526,531,536],{"__ignoreMap":215},[219,220,223,227],"span",{"class":221,"line":222},"line",1,[219,224,226],{"class":225},"sC2Qs","#include",[219,228,230],{"class":229},"sstjo"," \u003Ccstring>\n",[219,232,234],{"class":221,"line":233},2,[219,235,237],{"class":236},"sMOD_"," \n",[219,239,241,245,249],{"class":221,"line":240},3,[219,242,244],{"class":243},"sq6CD","class",[219,246,248],{"class":247},"sz2Vg"," IntArray",[219,250,251],{"class":236}," {\n",[219,253,255,258,261],{"class":221,"line":254},4,[219,256,257],{"class":243},"  int",[219,259,260],{"class":225}," *",[219,262,263],{"class":236},"array;\n",[219,265,267,270,273,276],{"class":221,"line":266},5,[219,268,269],{"class":247},"  std",[219,271,272],{"class":236},"::",[219,274,275],{"class":243},"size_t",[219,277,278],{"class":236}," nElems;\n",[219,280,282],{"class":221,"line":281},6,[219,283,284],{"class":243},"public:\n",[219,286,288],{"class":221,"line":287},7,[219,289,291],{"class":290},"s8-w5","  \u002F\u002F ...\n",[219,293,295],{"class":221,"line":294},8,[219,296,297],{"emptyLinePlaceholder":7},"\n",[219,299,301,305],{"class":221,"line":300},9,[219,302,304],{"class":303},"srTi1","  ~IntArray",[219,306,307],{"class":236},"() {\n",[219,309,311,314],{"class":221,"line":310},10,[219,312,313],{"class":225},"    delete[]",[219,315,316],{"class":236}," array;\n",[219,318,320],{"class":221,"line":319},11,[219,321,322],{"class":236},"  }\n",[219,324,326],{"class":221,"line":325},12,[219,327,297],{"emptyLinePlaceholder":7},[219,329,331],{"class":221,"line":330},13,[219,332,237],{"class":236},[219,334,336,339,342,345,347,350,354,357],{"class":221,"line":335},14,[219,337,338],{"class":303},"  IntArray",[219,340,341],{"class":236},"(",[219,343,344],{"class":225},"const",[219,346,248],{"class":247},[219,348,349],{"class":225},"&",[219,351,353],{"class":352},"sTHNf"," that",[219,355,356],{"class":236},");",[219,358,359],{"class":290}," \u002F\u002F nontrivial copy constructor\n",[219,361,363,365,367,370,374,376,378,380,383,386],{"class":221,"line":362},15,[219,364,338],{"class":247},[219,366,349],{"class":225},[219,368,369],{"class":225}," operator",[219,371,373],{"class":372},"s_OQ2","=",[219,375,341],{"class":236},[219,377,344],{"class":225},[219,379,248],{"class":247},[219,381,382],{"class":225}," &",[219,384,385],{"class":352},"rhs",[219,387,388],{"class":236},") {\n",[219,390,392,395,398,402,405,407],{"class":221,"line":391},16,[219,393,394],{"class":225},"    if",[219,396,397],{"class":236}," (",[219,399,401],{"class":400},"sP7S_","this",[219,403,404],{"class":225}," !=",[219,406,382],{"class":225},[219,408,409],{"class":236},"rhs) {\n",[219,411,413,416],{"class":221,"line":412},17,[219,414,415],{"class":225},"      delete[]",[219,417,316],{"class":236},[219,419,421,424,426,430],{"class":221,"line":420},18,[219,422,423],{"class":236},"      array ",[219,425,373],{"class":225},[219,427,429],{"class":428},"s7F3e"," nullptr",[219,431,432],{"class":236},";\n",[219,434,436,439,441],{"class":221,"line":435},19,[219,437,438],{"class":236},"      nElems ",[219,440,373],{"class":225},[219,442,443],{"class":236}," rhs.nElems;\n",[219,445,447,450],{"class":221,"line":446},20,[219,448,449],{"class":225},"      if",[219,451,452],{"class":236}," (nElems) {\n",[219,454,456,459,461,464,467],{"class":221,"line":455},21,[219,457,458],{"class":236},"        array ",[219,460,373],{"class":225},[219,462,463],{"class":225}," new",[219,465,466],{"class":243}," int",[219,468,469],{"class":236},"[nElems];\n",[219,471,473,476,478,481,484,487,490,492,494],{"class":221,"line":472},22,[219,474,475],{"class":247},"        std",[219,477,272],{"class":236},[219,479,480],{"class":303},"memcpy",[219,482,483],{"class":236},"(array, rhs.array, nElems ",[219,485,486],{"class":225},"*",[219,488,489],{"class":225}," sizeof",[219,491,341],{"class":236},[219,493,486],{"class":225},[219,495,496],{"class":236},"array));\n",[219,498,500],{"class":221,"line":499},23,[219,501,502],{"class":236},"      }\n",[219,504,506],{"class":221,"line":505},24,[219,507,508],{"class":236},"    }\n",[219,510,512,515,517,519],{"class":221,"line":511},25,[219,513,514],{"class":225},"    return",[219,516,260],{"class":225},[219,518,401],{"class":400},[219,520,432],{"class":236},[219,522,524],{"class":221,"line":523},26,[219,525,322],{"class":236},[219,527,529],{"class":221,"line":528},27,[219,530,297],{"emptyLinePlaceholder":7},[219,532,534],{"class":221,"line":533},28,[219,535,291],{"class":290},[219,537,539],{"class":221,"line":538},29,[219,540,541],{"class":236},"};\n",[39,543,544],{},[56,545],{"id":546},"ERR56CPP.Guaranteeexceptionsafety-StrongExceptionSafety",[173,548,550],{"id":549},"compliant-solution-strong-exception-safety","Compliant Solution (Strong Exception Safety)",[39,552,553,554,558,559,563],{},"In this compliant solution, the copy assignment operator provides the ",[56,555,557],{"href":556},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-strongexceptionsafety","strong exception safety"," guarantee. The function allocates new storage for the copy before changing the state of the object. Only after the allocation succeeds does the function proceed to change the state of the object. In addition, by copying the array to the newly allocated storage before deallocating the existing array, the function avoids the test for self-assignment, which improves the performance of the code in the common case [ ",[56,560,562],{"href":561},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Sutter04","Sutter 2004"," ].",[206,565,567],{"quality":566},"good",[210,568,570],{"className":212,"code":569,"language":214,"meta":215,"style":215},"#include \u003Ccstring>\n \nclass IntArray {\n  int *array;\n  std::size_t nElems;\npublic:\n  \u002F\u002F ...\n\n  ~IntArray() {\n    delete[] array;\n  }\n\n  IntArray(const IntArray& that); \u002F\u002F nontrivial copy constructor\n\n  IntArray& operator=(const IntArray &rhs) {\n    int *tmp = nullptr;\n    if (rhs.nElems) {\n      tmp = new int[rhs.nElems];\n      std::memcpy(tmp, rhs.array, rhs.nElems * sizeof(*array));\n    }\n    delete[] array;\n    array = tmp;\n    nElems = rhs.nElems;\n    return *this;\n  }\n\n  \u002F\u002F ...\n};\n",[43,571,572,578,582,590,598,608,612,616,620,626,632,636,640,658,662,684,700,707,721,743,747,753,763,772,782,786,790,794],{"__ignoreMap":215},[219,573,574,576],{"class":221,"line":222},[219,575,226],{"class":225},[219,577,230],{"class":229},[219,579,580],{"class":221,"line":233},[219,581,237],{"class":236},[219,583,584,586,588],{"class":221,"line":240},[219,585,244],{"class":243},[219,587,248],{"class":247},[219,589,251],{"class":236},[219,591,592,594,596],{"class":221,"line":254},[219,593,257],{"class":243},[219,595,260],{"class":225},[219,597,263],{"class":236},[219,599,600,602,604,606],{"class":221,"line":266},[219,601,269],{"class":247},[219,603,272],{"class":236},[219,605,275],{"class":243},[219,607,278],{"class":236},[219,609,610],{"class":221,"line":281},[219,611,284],{"class":243},[219,613,614],{"class":221,"line":287},[219,615,291],{"class":290},[219,617,618],{"class":221,"line":294},[219,619,297],{"emptyLinePlaceholder":7},[219,621,622,624],{"class":221,"line":300},[219,623,304],{"class":303},[219,625,307],{"class":236},[219,627,628,630],{"class":221,"line":310},[219,629,313],{"class":225},[219,631,316],{"class":236},[219,633,634],{"class":221,"line":319},[219,635,322],{"class":236},[219,637,638],{"class":221,"line":325},[219,639,297],{"emptyLinePlaceholder":7},[219,641,642,644,646,648,650,652,654,656],{"class":221,"line":330},[219,643,338],{"class":303},[219,645,341],{"class":236},[219,647,344],{"class":225},[219,649,248],{"class":247},[219,651,349],{"class":225},[219,653,353],{"class":352},[219,655,356],{"class":236},[219,657,359],{"class":290},[219,659,660],{"class":221,"line":335},[219,661,297],{"emptyLinePlaceholder":7},[219,663,664,666,668,670,672,674,676,678,680,682],{"class":221,"line":362},[219,665,338],{"class":247},[219,667,349],{"class":225},[219,669,369],{"class":225},[219,671,373],{"class":372},[219,673,341],{"class":236},[219,675,344],{"class":225},[219,677,248],{"class":247},[219,679,382],{"class":225},[219,681,385],{"class":352},[219,683,388],{"class":236},[219,685,686,689,691,694,696,698],{"class":221,"line":391},[219,687,688],{"class":243},"    int",[219,690,260],{"class":225},[219,692,693],{"class":236},"tmp ",[219,695,373],{"class":225},[219,697,429],{"class":428},[219,699,432],{"class":236},[219,701,702,704],{"class":221,"line":412},[219,703,394],{"class":225},[219,705,706],{"class":236}," (rhs.nElems) {\n",[219,708,709,712,714,716,718],{"class":221,"line":420},[219,710,711],{"class":236},"      tmp ",[219,713,373],{"class":225},[219,715,463],{"class":225},[219,717,466],{"class":243},[219,719,720],{"class":236},"[rhs.nElems];\n",[219,722,723,726,728,730,733,735,737,739,741],{"class":221,"line":435},[219,724,725],{"class":247},"      std",[219,727,272],{"class":236},[219,729,480],{"class":303},[219,731,732],{"class":236},"(tmp, rhs.array, rhs.nElems ",[219,734,486],{"class":225},[219,736,489],{"class":225},[219,738,341],{"class":236},[219,740,486],{"class":225},[219,742,496],{"class":236},[219,744,745],{"class":221,"line":446},[219,746,508],{"class":236},[219,748,749,751],{"class":221,"line":455},[219,750,313],{"class":225},[219,752,316],{"class":236},[219,754,755,758,760],{"class":221,"line":472},[219,756,757],{"class":236},"    array ",[219,759,373],{"class":225},[219,761,762],{"class":236}," tmp;\n",[219,764,765,768,770],{"class":221,"line":499},[219,766,767],{"class":236},"    nElems ",[219,769,373],{"class":225},[219,771,443],{"class":236},[219,773,774,776,778,780],{"class":221,"line":505},[219,775,514],{"class":225},[219,777,260],{"class":225},[219,779,401],{"class":400},[219,781,432],{"class":236},[219,783,784],{"class":221,"line":511},[219,785,322],{"class":236},[219,787,788],{"class":221,"line":523},[219,789,297],{"emptyLinePlaceholder":7},[219,791,792],{"class":221,"line":528},[219,793,291],{"class":290},[219,795,796],{"class":221,"line":533},[219,797,541],{"class":236},[173,799,801],{"id":800},"risk-assessment","Risk Assessment",[39,803,804],{},"Code that is not exception safe typically leads to resource leaks, causes the program to be left in an inconsistent or unexpected state, and ultimately results in undefined behavior at some point after the first exception is thrown.",[73,806,807,808,807,835],{},"\n  ",[76,809,810,811,807],{},"\n    ",[79,812,813,814,813,817,813,820,813,823,813,826,813,829,813,832,810],{},"\n      ",[82,815,816],{},"Rule",[82,818,819],{},"Severity",[82,821,822],{},"Likelihood",[82,824,825],{},"Detectable",[82,827,828],{},"Repairable",[82,830,831],{},"Priority",[82,833,834],{},"Level",[89,836,810,837,807],{},[79,838,813,839,813,842,813,845,813,848,813,851,813,853,813,860,810],{},[94,840,841],{},"ERR56-CPP",[94,843,844],{},"High",[94,846,847],{},"Likely",[94,849,850],{},"No",[94,852,850],{},[94,854,856],{"style":855},"color: #f1c40f;",[857,858,859],"b",{},"P9",[94,861,862],{"style":855},[857,863,864],{},"L2",[173,866,868],{"id":867},"automated-detection","Automated Detection",[73,870,873,898],{"className":871},[872],"wrapped",[76,874,875],{},[79,876,879,884,889,894],{"className":877},[878],"header",[82,880,881],{},[39,882,883],{},"Tool",[82,885,886],{},[39,887,888],{},"Version",[82,890,891],{},[39,892,893],{},"Checker",[82,895,896],{},[39,897,99],{},[89,899,900,930,958,990,1022,1048],{},[79,901,904,910,918,925],{"className":902},[903],"odd",[94,905,906],{},[56,907,909],{"href":908},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[94,911,912],{},[913,914,917],"div",{"className":915},[916],"content-wrapper","9.1p0",[94,919,920],{},[39,921,922],{},[111,923,924],{},"ALLOC.LEAK",[94,926,927],{},[39,928,929],{},"Leak",[79,931,934,940,948,953],{"className":932},[933],"even",[94,935,936],{},[56,937,939],{"href":938},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[94,941,942],{},[913,943,945],{"className":944},[916],[39,946,947],{},"2025.2",[94,949,950],{},[111,951,952],{},"C++4075, C++4076",[94,954,955],{},[956,957],"br",{},[79,959,961,967,973,985],{"className":960},[903],[94,962,963],{},[56,964,966],{"href":965},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[94,968,969],{},[913,970,972],{"className":971},[916],"9.7.1",[94,974,975],{},[39,976,977,980,981],{},[111,978,979],{},"527 S, 56 D, 71 D"," ",[111,982,983],{},[956,984],{},[94,986,987],{},[39,988,989],{},"Partially implemented",[79,991,993,999,1004,1016],{"className":992},[933],[94,994,995],{},[56,996,998],{"href":997},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[94,1000,1001],{},[913,1002,947],{"className":1003},[916],[94,1005,1006],{},[39,1007,1008],{},[111,1009,1010,1011,1013,1014],{},"CERT_CPP-ERR56-a",[956,1012],{},"\nCERT_CPP-ERR56-b",[956,1015],{},[94,1017,1018,1019,1021],{},"Always catch exceptions",[956,1020],{},"\nEmpty 'catch' blocks should not be used",[79,1023,1025,1031,1039,1045],{"className":1024},[903],[94,1026,1027],{},[56,1028,1030],{"href":1029},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[94,1032,1033],{},[913,1034,1036],{"className":1035},[916],[39,1037,1038],{},"R2025b",[94,1040,1041],{},[56,1042,1044],{"href":1043},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcerr56cpp.html","CERT C++: ERR56-CPP",[94,1046,1047],{},"Checks for exceptions violating class invariant (rule fully covered).",[79,1049,1051,1057,1068,1084],{"className":1050},[933],[94,1052,1053],{},[56,1054,1056],{"href":1055},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","PVS-Studio",[94,1058,1059],{},[913,1060,1062],{"className":1061},[916],[913,1063,1065],{"className":1064},[916],[39,1066,1067],{},"7.42",[94,1069,1070],{},[111,1071,1072,46,1076,46,1080],{},[56,1073,1075],{"href":1074},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv565\u002F","V565",[56,1077,1079],{"href":1078},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv1023\u002F","V1023",[56,1081,1083],{"href":1082},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv5002\u002F","V5002",[94,1085,1086],{},[956,1087],{},[173,1089,1091],{"id":1090},"related-vulnerabilities","Related Vulnerabilities",[39,1093,1094,1095,68],{},"Search for vulnerabilities resulting from the violation of this rule on the ",[56,1096,1100],{"href":1097,"rel":1098},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+ERR56-CPP",[1099],"nofollow","CERT website",[173,1102,1104],{"id":1103},"related-guidelines","Related Guidelines",[73,1106,1108],{"className":1107},[872],[89,1109,1110,1122],{},[79,1111,1113,1118],{"className":1112},[903],[94,1114,1115],{},[56,1116,1117],{"href":20},"SEI CERT C++ Coding Standard",[94,1119,1120],{},[56,1121,59],{"href":58},[79,1123,1125,1131],{"className":1124},[933],[94,1126,1127],{},[56,1128,1130],{"href":1129},"http:\u002F\u002Fcwe.mitre.org\u002F","MITRE CWE",[94,1132,1133],{},[39,1134,1135,1139,1140,1142,1146,1147,1149,1153],{},[56,1136,1138],{"href":1137},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F703.html","CWE-703"," , Failure to Handle Exceptional Conditions",[956,1141],{},[56,1143,1145],{"href":1144},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F754.html","CWE-754"," , Improper Check for Unusual or Exceptional Conditions",[956,1148],{},[56,1150,1152],{"href":1151},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F755.html","CWE-755"," , Improper Handling of Exceptional Conditions",[173,1155,1157],{"id":1156},"bibliography","Bibliography",[73,1159,1161,1170],{"className":1160},[872],[1162,1163,1164,1168],"colgroup",{},[1165,1166],"col",{"style":1167},"width: 50%",[1165,1169],{"style":1167},[89,1171,1172,1186,1199,1212,1225],{},[79,1173,1175,1183],{"className":1174},[903],[94,1176,1177,1178,1182],{},"[ ",[56,1179,1181],{"href":1180},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ]",[94,1184,1185],{},"Clause 15, \"Exception Handling\"",[79,1187,1189,1195],{"className":1188},[933],[94,1190,1177,1191,1182],{},[56,1192,1194],{"href":1193},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Stroustrup01","Stroustrup 2001",[94,1196,1197],{},[956,1198],{},[79,1200,1202,1208],{"className":1201},[903],[94,1203,1177,1204,1182],{},[56,1205,1207],{"href":1206},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Sutter00","Sutter 2000",[94,1209,1210],{},[956,1211],{},[79,1213,1215,1221],{"className":1214},[933],[94,1216,1177,1217,1182],{},[56,1218,1220],{"href":1219},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Sutter01","Sutter 2001",[94,1222,1223],{},[956,1224],{},[79,1226,1228,1232],{"className":1227},[903],[94,1229,1177,1230,1182],{},[56,1231,562],{"href":561},[94,1233,1234],{},"55. \"Prefer the canonical form of assignment.\"",[1236,1237],"hr",{},[39,1239,1240,980,1247,980,1253],{},[56,1241,1243],{"href":1242},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr55-cpp",[1244,1245],"img",{"src":1246},"\u002Fattachments\u002F88046682\u002F88480621.png",[56,1248,1250],{"href":1249},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002F",[1244,1251],{"src":1252},"\u002Fattachments\u002F88046682\u002F88475556.png",[56,1254,1256],{"href":1255},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr57-cpp",[1244,1257],{"src":1258},"\u002Fattachments\u002F88046682\u002F88475555.png",[1260,1261,1262],"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 .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}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 .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 .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}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}html pre.shiki code .sP7S_, html code.shiki .sP7S_{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#FD971F}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);}",{"title":215,"searchDepth":233,"depth":233,"links":1264},[1265,1266,1267,1268,1269,1270,1271],{"id":175,"depth":233,"text":176},{"id":549,"depth":233,"text":550},{"id":800,"depth":233,"text":801},{"id":867,"depth":233,"text":868},{"id":1090,"depth":233,"text":1091},{"id":1103,"depth":233,"text":1104},{"id":1156,"depth":233,"text":1157},"Proper handling of errors and exceptional situations is essential for the continued correct operation of software. The preferred mechanism for reporting errors in a C++ program is exceptions rather than error codes. A number of core language facilities, including dynamic_cast ,   operator new()  , and typeid , report failures by throwing exceptions. In addition, the C++ standard library makes heavy use of exceptions to report several different kinds of failures. Few C++ programs manage to avoid using some of these facilities. Consequently, the vast majority of C++ programs must be prepared for exceptions to occur and must handle each appropriately. (See ERR51-CPP. Handle all exceptions .)","md",{"tags":1275},[1276,1277,1278,1279,1280,1281,1282,1283,1284,1285],"review","cwe-755","cwe-754","nptc-intent","review-dms","cwe-703","rule","err","review-ajb","nptc","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp",{"title":30,"description":1272},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp","xxXU_ibc9hdTMj6uWw8AbGZM1Wn6m6BP3cjk8iUW3SI",[1291,1294],{"title":1292,"path":1242,"stem":1293,"children":-1},"ERR55-CPP. Honor exception specifications","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F07.err55-cpp",{"title":1295,"path":1255,"stem":1296,"children":-1},"ERR57-CPP. Do not leak resources when handling exceptions","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F09.err57-cpp",[1298],{"title":1117,"path":1299,"stem":1300,"children":1301},"\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1302,1303,1370,1761,1976,1986],{"title":1117,"path":1299,"stem":1300},{"title":1304,"path":1305,"stem":1306,"children":1307},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1308,1309],{"title":1304,"path":1305,"stem":1306},{"title":1310,"path":1311,"stem":1312,"children":1313},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1314,1315,1319,1323,1327,1331,1335,1339,1343,1347,1351,1355,1359,1363,1367],{"title":1310,"path":1311,"stem":1312},{"title":1316,"path":1317,"stem":1318},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1320,"path":1321,"stem":1322},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1324,"path":1325,"stem":1326},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1328,"path":1329,"stem":1330},"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":1332,"path":1333,"stem":1334},"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":1336,"path":1337,"stem":1338},"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":1340,"path":1341,"stem":1342},"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":1344,"path":1345,"stem":1346},"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":1348,"path":1349,"stem":1350},"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":1352,"path":1353,"stem":1354},"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":1356,"path":1357,"stem":1358},"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":1360,"path":1361,"stem":1362},"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":1364,"path":1365,"stem":1366},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":868,"path":1368,"stem":1369},"\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":1371,"path":1372,"stem":1373,"children":1374},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1375,1376,1398,1432,1474,1524,1569,1631,1645,1655,1693,1719],{"title":1371,"path":1372,"stem":1373},{"title":1377,"path":1378,"stem":1379,"children":1380},"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",[1381,1382,1386,1390,1394],{"title":1377,"path":1378,"stem":1379},{"title":1383,"path":1384,"stem":1385},"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":1387,"path":1388,"stem":1389},"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":1391,"path":1392,"stem":1393},"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":1395,"path":1396,"stem":1397},"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":1399,"path":1400,"stem":1401,"children":1402},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1403,1404,1408,1412,1416,1420,1424,1428],{"title":1399,"path":1400,"stem":1401},{"title":1405,"path":1406,"stem":1407},"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":1409,"path":1410,"stem":1411},"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":1413,"path":1414,"stem":1415},"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":1417,"path":1418,"stem":1419},"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":1421,"path":1422,"stem":1423},"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":1425,"path":1426,"stem":1427},"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":1429,"path":1430,"stem":1431},"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":1433,"path":1434,"stem":1435,"children":1436},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1437,1438,1442,1446,1450,1454,1458,1462,1466,1470],{"title":1433,"path":1434,"stem":1435},{"title":1439,"path":1440,"stem":1441},"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":1443,"path":1444,"stem":1445},"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":1447,"path":1448,"stem":1449},"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":1451,"path":1452,"stem":1453},"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":1455,"path":1456,"stem":1457},"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":1459,"path":1460,"stem":1461},"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":1463,"path":1464,"stem":1465},"CTR56-CPP. Do not use pointer arithmetic on polymorphic objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp",{"title":1467,"path":1468,"stem":1469},"CTR57-CPP. Provide a valid ordering predicate","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp",{"title":1471,"path":1472,"stem":1473},"CTR58-CPP. Predicate function objects should not be mutable","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",{"title":1475,"path":1476,"stem":1477,"children":1478},"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",[1479,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520],{"title":1475,"path":1476,"stem":1477},{"title":1481,"path":1482,"stem":1483},"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":1485,"path":1486,"stem":1487},"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":1489,"path":1490,"stem":1491},"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":1493,"path":1494,"stem":1495},"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":1497,"path":1498,"stem":1499},"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":1501,"path":1502,"stem":1503},"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":1505,"path":1506,"stem":1507},"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":1509,"path":1510,"stem":1511},"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":1513,"path":1514,"stem":1515},"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":1517,"path":1518,"stem":1519},"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":1521,"path":1522,"stem":1523},"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":1525,"path":1526,"stem":1527,"children":1528},"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",[1529,1530,1532,1534,1538,1542,1546,1547,1548,1549,1553,1557,1561,1565],{"title":1525,"path":1526,"stem":1527},{"title":165,"path":164,"stem":1531},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F02.err50-cpp",{"title":59,"path":58,"stem":1533},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F03.err51-cpp",{"title":1535,"path":1536,"stem":1537},"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":1539,"path":1540,"stem":1541},"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":1543,"path":1544,"stem":1545},"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":1292,"path":1242,"stem":1293},{"title":30,"path":1286,"stem":1288},{"title":1295,"path":1255,"stem":1296},{"title":1550,"path":1551,"stem":1552},"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":1554,"path":1555,"stem":1556},"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":1558,"path":1559,"stem":1560},"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":1562,"path":1563,"stem":1564},"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":1566,"path":1567,"stem":1568},"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":1570,"path":1571,"stem":1572,"children":1573},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1574,1575,1579,1583,1587,1591,1595,1599,1603,1607,1611,1615,1619,1623,1627],{"title":1570,"path":1571,"stem":1572},{"title":1576,"path":1577,"stem":1578},"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":1580,"path":1581,"stem":1582},"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":1584,"path":1585,"stem":1586},"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":1588,"path":1589,"stem":1590},"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":1592,"path":1593,"stem":1594},"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":1596,"path":1597,"stem":1598},"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":1600,"path":1601,"stem":1602},"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":1604,"path":1605,"stem":1606},"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":1608,"path":1609,"stem":1610},"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":1612,"path":1613,"stem":1614},"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":1616,"path":1617,"stem":1618},"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":1620,"path":1621,"stem":1622},"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":1624,"path":1625,"stem":1626},"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":1628,"path":1629,"stem":1630},"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":1632,"path":1633,"stem":1634,"children":1635},"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",[1636,1637,1641],{"title":1632,"path":1633,"stem":1634},{"title":1638,"path":1639,"stem":1640},"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":1642,"path":1643,"stem":1644},"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":1646,"path":1647,"stem":1648,"children":1649},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1650,1651],{"title":1646,"path":1647,"stem":1648},{"title":1652,"path":1653,"stem":1654},"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":1656,"path":1657,"stem":1658,"children":1659},"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",[1660,1661,1665,1669,1673,1677,1681,1685,1689],{"title":1656,"path":1657,"stem":1658},{"title":1662,"path":1663,"stem":1664},"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":1666,"path":1667,"stem":1668},"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":1670,"path":1671,"stem":1672},"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":1674,"path":1675,"stem":1676},"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":1678,"path":1679,"stem":1680},"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":1682,"path":1683,"stem":1684},"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":1686,"path":1687,"stem":1688},"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":1690,"path":1691,"stem":1692},"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":1694,"path":1695,"stem":1696,"children":1697},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1698,1699,1703,1707,1711,1715],{"title":1694,"path":1695,"stem":1696},{"title":1700,"path":1701,"stem":1702},"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":1704,"path":1705,"stem":1706},"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":1708,"path":1709,"stem":1710},"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":1712,"path":1713,"stem":1714},"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":1716,"path":1717,"stem":1718},"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":1720,"path":1721,"stem":1722,"children":1723},"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",[1724,1725,1729,1733,1737,1741,1745,1749,1753,1757],{"title":1720,"path":1721,"stem":1722},{"title":1726,"path":1727,"stem":1728},"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":1730,"path":1731,"stem":1732},"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":1734,"path":1735,"stem":1736},"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":1738,"path":1739,"stem":1740},"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":1742,"path":1743,"stem":1744},"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":1746,"path":1747,"stem":1748},"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":1750,"path":1751,"stem":1752},"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":1754,"path":1755,"stem":1756},"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":1758,"path":1759,"stem":1760},"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":1762,"path":1763,"stem":1764,"children":1765},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1766,1767,1771,1775,1959,1972],{"title":1762,"path":1763,"stem":1764},{"title":1768,"path":1769,"stem":1770},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1772,"path":1773,"stem":1774},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1776,"path":1777,"stem":1778,"children":1779},"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",[1780,1781,1785,1789,1793,1797,1801,1805,1809,1813,1817,1821,1825,1827,1831,1835,1839,1843,1847,1851,1855,1859,1863,1865,1869,1873,1877,1880,1884,1887,1891,1893,1897,1901,1905,1907,1911,1915,1919,1923,1927,1931,1935,1939,1943,1947,1951,1955],{"title":1776,"path":1777,"stem":1778},{"title":1782,"path":1783,"stem":1784},"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":1786,"path":1787,"stem":1788},"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":1790,"path":1791,"stem":1792},"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":1794,"path":1795,"stem":1796},"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":1798,"path":1799,"stem":1800},"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":1802,"path":1803,"stem":1804},"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":1806,"path":1807,"stem":1808},"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":1810,"path":1811,"stem":1812},"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":1814,"path":1815,"stem":1816},"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":1818,"path":1819,"stem":1820},"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":1822,"path":1823,"stem":1824},"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":909,"path":908,"stem":1826},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1828,"path":1829,"stem":1830},"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":1832,"path":1833,"stem":1834},"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":1836,"path":1837,"stem":1838},"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":1840,"path":1841,"stem":1842},"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":1844,"path":1845,"stem":1846},"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":1848,"path":1849,"stem":1850},"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":1852,"path":1853,"stem":1854},"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":1856,"path":1857,"stem":1858},"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":1860,"path":1861,"stem":1862},"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":939,"path":938,"stem":1864},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1866,"path":1867,"stem":1868},"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":1870,"path":1871,"stem":1872},"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":1874,"path":1875,"stem":1876},"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":1878,"path":965,"stem":1879},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":1881,"path":1882,"stem":1883},"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":1885,"path":997,"stem":1886},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1888,"path":1889,"stem":1890},"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":1030,"path":1029,"stem":1892},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":1894,"path":1895,"stem":1896},"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":1898,"path":1899,"stem":1900},"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":1902,"path":1903,"stem":1904},"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":1056,"path":1055,"stem":1906},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":1908,"path":1909,"stem":1910},"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":1912,"path":1913,"stem":1914},"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":1916,"path":1917,"stem":1918},"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":1920,"path":1921,"stem":1922},"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":1924,"path":1925,"stem":1926},"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":1928,"path":1929,"stem":1930},"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":1932,"path":1933,"stem":1934},"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":1936,"path":1937,"stem":1938},"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":1940,"path":1941,"stem":1942},"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":1944,"path":1945,"stem":1946},"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":1948,"path":1949,"stem":1950},"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":1952,"path":1953,"stem":1954},"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":1956,"path":1957,"stem":1958},"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":1960,"path":1961,"stem":1962,"children":1963},"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",[1964,1965,1969],{"title":1960,"path":1961,"stem":1962},{"title":1966,"path":1967,"stem":1968},"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":1130,"path":1970,"stem":1971},"\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":1973,"path":1974,"stem":1975},"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":1977,"path":1978,"stem":1979,"children":1980},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[1981,1982],{"title":1977,"path":1978,"stem":1979},{"title":1983,"path":1984,"stem":1985},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":1987,"path":1988,"stem":1989},"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",1775657781495]