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