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