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