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