[{"data":1,"prerenderedAt":2683},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp":1978,"sidebar-sei-cert-cpp-coding-standard":1985},[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":1963,"extension":1964,"meta":1965,"navigation":7,"path":1974,"seo":1975,"stem":1976,"__hash__":1977},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp.md","CTR54-CPP. Do not subtract iterators that do not refer to the same container",{"type":32,"value":33,"toc":1950},"minimark",[34,38,55,69,74,88,355,358,368,434,442,613,616,639,933,936,948,976,1003,1196,1200,1213,1502,1506,1571,1576,1814,1818,1832,1836,1878,1882,1922,1925,1946],[35,36,30],"h1",{"id":37},"ctr54-cpp-do-not-subtract-iterators-that-do-not-refer-to-the-same-container",[39,40,41,42,46,47,50,51,54],"p",{},"When two pointers are subtracted, both must point to elements of the same array object or to one past the last element of the array object; the result is the difference of the subscripts of the two array elements. Similarly, when two iterators are subtracted (including via ",[43,44,45],"code",{},"std::distance()"," ), both iterators must refer to the same container object or must be obtained via a call to ",[43,48,49],{},"end()"," (or ",[43,52,53],{},"cend()"," ) on the same container object.",[39,56,57,58,63,64,68],{},"If two unrelated iterators (including pointers) are subtracted, the operation results in ",[59,60,62],"a",{"href":61},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," [ ",[59,65,67],{"href":66},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ] . Do not subtract two iterators (including pointers) unless both point into the same container or one past the end of the same container.",[70,71,73],"h2",{"id":72},"noncompliant-code-example","Noncompliant Code Example",[39,75,76,77,80,81,84,85,87],{},"This noncompliant code example attempts to determine whether the pointer ",[43,78,79],{},"test"," is within the range ",[43,82,83],{},"  [r, r + n] "," . However, when ",[43,86,79],{}," does not point within the given range, as in this example, the subtraction produces undefined behavior.",[89,90,92],"code-block",{"quality":91},"bad",[93,94,99],"pre",{"className":95,"code":96,"language":97,"meta":98,"style":98},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Ccstddef>\n#include \u003Ciostream>\n \ntemplate \u003Ctypename Ty>\nbool in_range(const Ty *test, const Ty *r, size_t n) {\n  return 0 \u003C (test - r) && (test - r) \u003C (std::ptrdiff_t)n;\n}\n \nvoid f() {\n  double foo[10];\n  double *x = &foo[0];\n  double bar;\n  std::cout \u003C\u003C std::boolalpha \u003C\u003C in_range(&bar, x, 10);\n}\n","cpp","",[43,100,101,114,122,129,149,196,245,251,256,268,283,307,315,350],{"__ignoreMap":98},[102,103,106,110],"span",{"class":104,"line":105},"line",1,[102,107,109],{"class":108},"sC2Qs","#include",[102,111,113],{"class":112},"sstjo"," \u003Ccstddef>\n",[102,115,117,119],{"class":104,"line":116},2,[102,118,109],{"class":108},[102,120,121],{"class":112}," \u003Ciostream>\n",[102,123,125],{"class":104,"line":124},3,[102,126,128],{"class":127},"sMOD_"," \n",[102,130,132,136,139,142,146],{"class":104,"line":131},4,[102,133,135],{"class":134},"sq6CD","template",[102,137,138],{"class":127}," \u003C",[102,140,141],{"class":134},"typename",[102,143,145],{"class":144},"sz2Vg"," Ty",[102,147,148],{"class":127},">\n",[102,150,152,155,159,162,165,167,170,173,176,178,180,182,185,187,190,193],{"class":104,"line":151},5,[102,153,154],{"class":134},"bool",[102,156,158],{"class":157},"srTi1"," in_range",[102,160,161],{"class":127},"(",[102,163,164],{"class":108},"const",[102,166,145],{"class":144},[102,168,169],{"class":108}," *",[102,171,79],{"class":172},"sTHNf",[102,174,175],{"class":127},", ",[102,177,164],{"class":108},[102,179,145],{"class":144},[102,181,169],{"class":108},[102,183,184],{"class":172},"r",[102,186,175],{"class":127},[102,188,189],{"class":134},"size_t",[102,191,192],{"class":172}," n",[102,194,195],{"class":127},") {\n",[102,197,199,202,206,208,211,214,217,220,222,224,226,229,232,235,238,242],{"class":104,"line":198},6,[102,200,201],{"class":108},"  return",[102,203,205],{"class":204},"s7F3e"," 0",[102,207,138],{"class":108},[102,209,210],{"class":127}," (test ",[102,212,213],{"class":108},"-",[102,215,216],{"class":127}," r) ",[102,218,219],{"class":108},"&&",[102,221,210],{"class":127},[102,223,213],{"class":108},[102,225,216],{"class":127},[102,227,228],{"class":108},"\u003C",[102,230,231],{"class":127}," (",[102,233,234],{"class":144},"std",[102,236,237],{"class":127},"::",[102,239,241],{"class":240},"s-m8C","ptrdiff_t",[102,243,244],{"class":127},")n;\n",[102,246,248],{"class":104,"line":247},7,[102,249,250],{"class":127},"}\n",[102,252,254],{"class":104,"line":253},8,[102,255,128],{"class":127},[102,257,259,262,265],{"class":104,"line":258},9,[102,260,261],{"class":134},"void",[102,263,264],{"class":157}," f",[102,266,267],{"class":127},"() {\n",[102,269,271,274,277,280],{"class":104,"line":270},10,[102,272,273],{"class":134},"  double",[102,275,276],{"class":127}," foo[",[102,278,279],{"class":204},"10",[102,281,282],{"class":127},"];\n",[102,284,286,288,290,293,296,299,302,305],{"class":104,"line":285},11,[102,287,273],{"class":134},[102,289,169],{"class":108},[102,291,292],{"class":127},"x ",[102,294,295],{"class":108},"=",[102,297,298],{"class":108}," &",[102,300,301],{"class":127},"foo[",[102,303,304],{"class":204},"0",[102,306,282],{"class":127},[102,308,310,312],{"class":104,"line":309},12,[102,311,273],{"class":134},[102,313,314],{"class":127}," bar;\n",[102,316,318,321,324,327,330,333,335,337,339,342,345,347],{"class":104,"line":317},13,[102,319,320],{"class":144},"  std",[102,322,323],{"class":127},"::cout ",[102,325,326],{"class":108},"\u003C\u003C",[102,328,329],{"class":144}," std",[102,331,332],{"class":127},"::boolalpha ",[102,334,326],{"class":108},[102,336,158],{"class":157},[102,338,161],{"class":127},[102,340,341],{"class":108},"&",[102,343,344],{"class":127},"bar, x, ",[102,346,279],{"class":204},[102,348,349],{"class":127},");\n",[102,351,353],{"class":104,"line":352},14,[102,354,250],{"class":127},[70,356,73],{"id":357},"noncompliant-code-example-1",[39,359,360,361,364,365,367],{},"In this noncompliant code example, the ",[43,362,363],{},"in_range()"," function is implemented using a comparison expression instead of subtraction. The C++ Standard, [expr.rel], paragraph 4 [ ",[59,366,67],{"href":66}," ], states the following:",[369,370,371],"blockquote",{},[39,372,373,374,376,377,380,381,376,384,387,388,376,391,376,394,387,397,400,401,403,404,406,407,406,409,406,411,414,415,418,419,376,421,406,423,406,425,414,428,418,431,433],{},"If two operands ",[43,375,39],{}," and ",[43,378,379],{},"q"," compare equal, ",[43,382,383],{},"p\u003C=q",[43,385,386],{},"p>=q"," both yield ",[43,389,390],{},"true",[43,392,393],{},"p\u003Cq",[43,395,396],{},"p>q",[43,398,399],{},"false"," . Otherwise, if a pointer ",[43,402,39],{}," compares greater than a pointer ",[43,405,379],{}," , ",[43,408,386],{},[43,410,396],{},[43,412,413],{},"q\u003C=p"," , and ",[43,416,417],{},"q\u003Cp"," all yield ",[43,420,390],{},[43,422,383],{},[43,424,393],{},[43,426,427],{},"q>=p",[43,429,430],{},"q>p",[43,432,399],{}," . Otherwise, the result of each of the operators is unspecified.",[39,435,436,437,441],{},"Thus, comparing two pointers that do not point into the same container or one past the end of the container results in ",[59,438,440],{"href":439},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-unspecifiedbehavior","unspecified behavior"," . Although the following example is an improvement over the previous noncompliant code example, it does not result in portable code and may fail when executed on a segmented memory architecture (such as some antiquated x86 variants). Consequently, it is noncompliant.",[89,443,444],{"quality":91},[93,445,447],{"className":95,"code":446,"language":97,"meta":98,"style":98},"#include \u003Ciostream>\n \ntemplate \u003Ctypename Ty>\nbool in_range(const Ty *test, const Ty *r, size_t n) {\n  return test >= r && test \u003C (r + n);\n}\n \nvoid f() {\n  double foo[10];\n  double *x = &foo[0];\n  double bar;\n  std::cout \u003C\u003C std::boolalpha \u003C\u003C in_range(&bar, x, 10);\n}\n",[43,448,449,455,459,471,505,533,537,541,549,559,577,583,609],{"__ignoreMap":98},[102,450,451,453],{"class":104,"line":105},[102,452,109],{"class":108},[102,454,121],{"class":112},[102,456,457],{"class":104,"line":116},[102,458,128],{"class":127},[102,460,461,463,465,467,469],{"class":104,"line":124},[102,462,135],{"class":134},[102,464,138],{"class":127},[102,466,141],{"class":134},[102,468,145],{"class":144},[102,470,148],{"class":127},[102,472,473,475,477,479,481,483,485,487,489,491,493,495,497,499,501,503],{"class":104,"line":131},[102,474,154],{"class":134},[102,476,158],{"class":157},[102,478,161],{"class":127},[102,480,164],{"class":108},[102,482,145],{"class":144},[102,484,169],{"class":108},[102,486,79],{"class":172},[102,488,175],{"class":127},[102,490,164],{"class":108},[102,492,145],{"class":144},[102,494,169],{"class":108},[102,496,184],{"class":172},[102,498,175],{"class":127},[102,500,189],{"class":134},[102,502,192],{"class":172},[102,504,195],{"class":127},[102,506,507,509,512,515,518,520,522,524,527,530],{"class":104,"line":151},[102,508,201],{"class":108},[102,510,511],{"class":127}," test ",[102,513,514],{"class":108},">=",[102,516,517],{"class":127}," r ",[102,519,219],{"class":108},[102,521,511],{"class":127},[102,523,228],{"class":108},[102,525,526],{"class":127}," (r ",[102,528,529],{"class":108},"+",[102,531,532],{"class":127}," n);\n",[102,534,535],{"class":104,"line":198},[102,536,250],{"class":127},[102,538,539],{"class":104,"line":247},[102,540,128],{"class":127},[102,542,543,545,547],{"class":104,"line":253},[102,544,261],{"class":134},[102,546,264],{"class":157},[102,548,267],{"class":127},[102,550,551,553,555,557],{"class":104,"line":258},[102,552,273],{"class":134},[102,554,276],{"class":127},[102,556,279],{"class":204},[102,558,282],{"class":127},[102,560,561,563,565,567,569,571,573,575],{"class":104,"line":270},[102,562,273],{"class":134},[102,564,169],{"class":108},[102,566,292],{"class":127},[102,568,295],{"class":108},[102,570,298],{"class":108},[102,572,301],{"class":127},[102,574,304],{"class":204},[102,576,282],{"class":127},[102,578,579,581],{"class":104,"line":285},[102,580,273],{"class":134},[102,582,314],{"class":127},[102,584,585,587,589,591,593,595,597,599,601,603,605,607],{"class":104,"line":309},[102,586,320],{"class":144},[102,588,323],{"class":127},[102,590,326],{"class":108},[102,592,329],{"class":144},[102,594,332],{"class":127},[102,596,326],{"class":108},[102,598,158],{"class":157},[102,600,161],{"class":127},[102,602,341],{"class":108},[102,604,344],{"class":127},[102,606,279],{"class":204},[102,608,349],{"class":127},[102,610,611],{"class":104,"line":317},[102,612,250],{"class":127},[70,614,73],{"id":615},"noncompliant-code-example-2",[39,617,618,619,622,623,625,626,629,630,414,633,635,636,638],{},"This noncompliant code example is roughly equivalent to the previous example, except that it uses iterators in place of raw pointers. As with the previous example, the ",[43,620,621],{},"in_range_impl()"," function exhibits ",[59,624,440],{"href":439}," when the iterators do not refer into the same container because the operational semantics of ",[43,627,628],{},"  a \u003C b "," on a random access iterator are ",[43,631,632],{},"  b - a > 0 ",[43,634,514],{}," is implemented in terms of ",[43,637,228],{}," .",[89,640,641],{"quality":91},[93,642,644],{"className":95,"code":643,"language":97,"meta":98,"style":98},"#include \u003Ciostream>\n#include \u003Citerator>\n#include \u003Cvector>\n\ntemplate \u003Ctypename RandIter>\nbool in_range_impl(RandIter test, RandIter r_begin, RandIter r_end, std::random_access_iterator_tag) {\n  return test >= r_begin && test \u003C r_end;\n}\n \ntemplate \u003Ctypename Iter>\nbool in_range(Iter test, Iter r_begin, Iter r_end) {\n  typename std::iterator_traits\u003CIter>::iterator_category cat;\n  return in_range_impl(test, r_begin, r_end, cat);\n}\n \nvoid f() {\n  std::vector\u003Cdouble> foo(10);\n  std::vector\u003Cdouble> bar(1);\n  std::cout \u003C\u003C std::boolalpha \u003C\u003C in_range(bar.begin(), foo.begin(), foo.end());\n}\n",[43,645,646,652,659,666,671,684,724,744,748,752,765,792,817,826,830,835,844,869,892,928],{"__ignoreMap":98},[102,647,648,650],{"class":104,"line":105},[102,649,109],{"class":108},[102,651,121],{"class":112},[102,653,654,656],{"class":104,"line":116},[102,655,109],{"class":108},[102,657,658],{"class":112}," \u003Citerator>\n",[102,660,661,663],{"class":104,"line":124},[102,662,109],{"class":108},[102,664,665],{"class":112}," \u003Cvector>\n",[102,667,668],{"class":104,"line":131},[102,669,670],{"emptyLinePlaceholder":7},"\n",[102,672,673,675,677,679,682],{"class":104,"line":151},[102,674,135],{"class":134},[102,676,138],{"class":127},[102,678,141],{"class":134},[102,680,681],{"class":144}," RandIter",[102,683,148],{"class":127},[102,685,686,688,691,693,696,699,701,703,706,708,710,713,715,717,719,722],{"class":104,"line":198},[102,687,154],{"class":134},[102,689,690],{"class":157}," in_range_impl",[102,692,161],{"class":127},[102,694,695],{"class":144},"RandIter",[102,697,698],{"class":172}," test",[102,700,175],{"class":127},[102,702,695],{"class":144},[102,704,705],{"class":172}," r_begin",[102,707,175],{"class":127},[102,709,695],{"class":144},[102,711,712],{"class":172}," r_end",[102,714,175],{"class":127},[102,716,234],{"class":144},[102,718,237],{"class":127},[102,720,721],{"class":144},"random_access_iterator_tag",[102,723,195],{"class":127},[102,725,726,728,730,732,735,737,739,741],{"class":104,"line":247},[102,727,201],{"class":108},[102,729,511],{"class":127},[102,731,514],{"class":108},[102,733,734],{"class":127}," r_begin ",[102,736,219],{"class":108},[102,738,511],{"class":127},[102,740,228],{"class":108},[102,742,743],{"class":127}," r_end;\n",[102,745,746],{"class":104,"line":253},[102,747,250],{"class":127},[102,749,750],{"class":104,"line":258},[102,751,128],{"class":127},[102,753,754,756,758,760,763],{"class":104,"line":270},[102,755,135],{"class":134},[102,757,138],{"class":127},[102,759,141],{"class":134},[102,761,762],{"class":144}," Iter",[102,764,148],{"class":127},[102,766,767,769,771,773,776,778,780,782,784,786,788,790],{"class":104,"line":285},[102,768,154],{"class":134},[102,770,158],{"class":157},[102,772,161],{"class":127},[102,774,775],{"class":144},"Iter",[102,777,698],{"class":172},[102,779,175],{"class":127},[102,781,775],{"class":144},[102,783,705],{"class":172},[102,785,175],{"class":127},[102,787,775],{"class":144},[102,789,712],{"class":172},[102,791,195],{"class":127},[102,793,794,797,799,801,804,806,808,811,814],{"class":104,"line":309},[102,795,796],{"class":108},"  typename",[102,798,329],{"class":144},[102,800,237],{"class":127},[102,802,803],{"class":144},"iterator_traits",[102,805,228],{"class":127},[102,807,775],{"class":144},[102,809,810],{"class":127},">::",[102,812,813],{"class":144},"iterator_category",[102,815,816],{"class":127}," cat;\n",[102,818,819,821,823],{"class":104,"line":317},[102,820,201],{"class":108},[102,822,690],{"class":157},[102,824,825],{"class":127},"(test, r_begin, r_end, cat);\n",[102,827,828],{"class":104,"line":352},[102,829,250],{"class":127},[102,831,833],{"class":104,"line":832},15,[102,834,128],{"class":127},[102,836,838,840,842],{"class":104,"line":837},16,[102,839,261],{"class":134},[102,841,264],{"class":157},[102,843,267],{"class":127},[102,845,847,849,852,854,857,860,863,865,867],{"class":104,"line":846},17,[102,848,320],{"class":144},[102,850,851],{"class":127},"::vector",[102,853,228],{"class":108},[102,855,856],{"class":134},"double",[102,858,859],{"class":108},">",[102,861,862],{"class":157}," foo",[102,864,161],{"class":127},[102,866,279],{"class":204},[102,868,349],{"class":127},[102,870,872,874,876,878,880,882,885,887,890],{"class":104,"line":871},18,[102,873,320],{"class":144},[102,875,851],{"class":127},[102,877,228],{"class":108},[102,879,856],{"class":134},[102,881,859],{"class":108},[102,883,884],{"class":157}," bar",[102,886,161],{"class":127},[102,888,889],{"class":204},"1",[102,891,349],{"class":127},[102,893,895,897,899,901,903,905,907,909,912,915,918,920,922,925],{"class":104,"line":894},19,[102,896,320],{"class":144},[102,898,323],{"class":127},[102,900,326],{"class":108},[102,902,329],{"class":144},[102,904,332],{"class":127},[102,906,326],{"class":108},[102,908,158],{"class":157},[102,910,911],{"class":127},"(bar.",[102,913,914],{"class":157},"begin",[102,916,917],{"class":127},"(), foo.",[102,919,914],{"class":157},[102,921,917],{"class":127},[102,923,924],{"class":157},"end",[102,926,927],{"class":127},"());\n",[102,929,931],{"class":104,"line":930},20,[102,932,250],{"class":127},[70,934,73],{"id":935},"noncompliant-code-example-3",[39,937,938,939,942,943,945,946,367],{},"In this noncompliant code example, ",[43,940,941],{},"std::less\u003C>"," is used in place of the ",[43,944,228],{}," operator. The C++ Standard, [comparisons], paragraph 14 [ ",[59,947,67],{"href":66},[369,949,950],{},[39,951,952,953,406,956,406,959,414,962,965,966,406,968,406,970,406,973,975],{},"For templates ",[43,954,955],{},"greater",[43,957,958],{},"less",[43,960,961],{},"greater_equal",[43,963,964],{},"less_equal"," , the specializations for any pointer type yield a total order, even if the built-in operators ",[43,967,228],{},[43,969,859],{},[43,971,972],{},"\u003C=",[43,974,514],{}," do not.",[39,977,978,979,983,984,376,986,989,990,993,994,996,997,999,1000,1002],{},"Although this approach yields a total ordering, the definition of that total ordering is still unspecified by the ",[59,980,982],{"href":981},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","implementation"," . For instance, the following statement could result in the assertion triggering for a given, unrelated pair of pointers, ",[43,985,59],{},[43,987,988],{},"b"," : ",[43,991,992],{},"  assert(std::less\u003CT *>()(a, b) == std::greater\u003CT *>()(a, b)); "," . Consequently, this noncompliant code example is still nonportable and, on common implementations of ",[43,995,941],{}," , may even result in ",[59,998,62],{"href":61}," when the ",[43,1001,228],{}," operator is invoked.",[89,1004,1005],{"quality":91},[93,1006,1008],{"className":95,"code":1007,"language":97,"meta":98,"style":98},"#include \u003Cfunctional>\n#include \u003Ciostream>\n \ntemplate \u003Ctypename Ty>\nbool in_range(const Ty *test, const Ty *r, size_t n) {\n  std::less\u003Cconst Ty *> less;\n  return !less(test, r) && less(test, r + n);\n}\n \nvoid f() {\n  double foo[10];\n  double *x = &foo[0];\n  double bar;\n  std::cout \u003C\u003C std::boolalpha \u003C\u003C in_range(&bar, x, 10);\n}\n",[43,1009,1010,1017,1023,1027,1039,1073,1092,1116,1120,1124,1132,1142,1160,1166,1192],{"__ignoreMap":98},[102,1011,1012,1014],{"class":104,"line":105},[102,1013,109],{"class":108},[102,1015,1016],{"class":112}," \u003Cfunctional>\n",[102,1018,1019,1021],{"class":104,"line":116},[102,1020,109],{"class":108},[102,1022,121],{"class":112},[102,1024,1025],{"class":104,"line":124},[102,1026,128],{"class":127},[102,1028,1029,1031,1033,1035,1037],{"class":104,"line":131},[102,1030,135],{"class":134},[102,1032,138],{"class":127},[102,1034,141],{"class":134},[102,1036,145],{"class":144},[102,1038,148],{"class":127},[102,1040,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071],{"class":104,"line":151},[102,1042,154],{"class":134},[102,1044,158],{"class":157},[102,1046,161],{"class":127},[102,1048,164],{"class":108},[102,1050,145],{"class":144},[102,1052,169],{"class":108},[102,1054,79],{"class":172},[102,1056,175],{"class":127},[102,1058,164],{"class":108},[102,1060,145],{"class":144},[102,1062,169],{"class":108},[102,1064,184],{"class":172},[102,1066,175],{"class":127},[102,1068,189],{"class":134},[102,1070,192],{"class":172},[102,1072,195],{"class":127},[102,1074,1075,1077,1080,1083,1086,1089],{"class":104,"line":198},[102,1076,320],{"class":144},[102,1078,1079],{"class":127},"::less",[102,1081,1082],{"class":108},"\u003Cconst",[102,1084,1085],{"class":127}," Ty ",[102,1087,1088],{"class":108},"*>",[102,1090,1091],{"class":127}," less;\n",[102,1093,1094,1096,1099,1101,1104,1106,1109,1112,1114],{"class":104,"line":247},[102,1095,201],{"class":108},[102,1097,1098],{"class":108}," !",[102,1100,958],{"class":157},[102,1102,1103],{"class":127},"(test, r) ",[102,1105,219],{"class":108},[102,1107,1108],{"class":157}," less",[102,1110,1111],{"class":127},"(test, r ",[102,1113,529],{"class":108},[102,1115,532],{"class":127},[102,1117,1118],{"class":104,"line":253},[102,1119,250],{"class":127},[102,1121,1122],{"class":104,"line":258},[102,1123,128],{"class":127},[102,1125,1126,1128,1130],{"class":104,"line":270},[102,1127,261],{"class":134},[102,1129,264],{"class":157},[102,1131,267],{"class":127},[102,1133,1134,1136,1138,1140],{"class":104,"line":285},[102,1135,273],{"class":134},[102,1137,276],{"class":127},[102,1139,279],{"class":204},[102,1141,282],{"class":127},[102,1143,1144,1146,1148,1150,1152,1154,1156,1158],{"class":104,"line":309},[102,1145,273],{"class":134},[102,1147,169],{"class":108},[102,1149,292],{"class":127},[102,1151,295],{"class":108},[102,1153,298],{"class":108},[102,1155,301],{"class":127},[102,1157,304],{"class":204},[102,1159,282],{"class":127},[102,1161,1162,1164],{"class":104,"line":317},[102,1163,273],{"class":134},[102,1165,314],{"class":127},[102,1167,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190],{"class":104,"line":352},[102,1169,320],{"class":144},[102,1171,323],{"class":127},[102,1173,326],{"class":108},[102,1175,329],{"class":144},[102,1177,332],{"class":127},[102,1179,326],{"class":108},[102,1181,158],{"class":157},[102,1183,161],{"class":127},[102,1185,341],{"class":108},[102,1187,344],{"class":127},[102,1189,279],{"class":204},[102,1191,349],{"class":127},[102,1193,1194],{"class":104,"line":832},[102,1195,250],{"class":127},[70,1197,1199],{"id":1198},"compliant-solution","Compliant Solution",[39,1201,1202,1203,1205,1206,1208,1209,1212],{},"This compliant solution demonstrates a fully portable, but likely inefficient, implementation of ",[43,1204,363],{}," that compares ",[43,1207,79],{}," against each possible address in the range ",[43,1210,1211],{},"  [r, n] "," . A compliant solution that is both efficient and fully portable is currently unknown.",[89,1214,1216],{"quality":1215},"good",[93,1217,1219],{"className":95,"code":1218,"language":97,"meta":98,"style":98},"#include \u003Ciostream>\n \ntemplate \u003Ctypename Ty>\nbool in_range(const Ty *test, const Ty *r, size_t n) {\n  auto *cur = reinterpret_cast\u003Cconst unsigned char *>(r);\n  auto *end = reinterpret_cast\u003Cconst unsigned char *>(r + n);\n  auto *testPtr = reinterpret_cast\u003Cconst unsigned char *>(test);\n \n  for (; cur != end; ++cur) {\n    if (cur == testPtr) {\n      return true;\n    }\n  }\n  return false;\n}\n \nvoid f() {\n  double foo[10];\n  double *x = &foo[0];\n  double bar;\n  std::cout \u003C\u003C std::boolalpha \u003C\u003C in_range(&bar, x, 10);\n}\n",[43,1220,1221,1227,1231,1243,1277,1304,1330,1352,1356,1376,1390,1401,1406,1411,1420,1424,1428,1436,1446,1464,1470,1497],{"__ignoreMap":98},[102,1222,1223,1225],{"class":104,"line":105},[102,1224,109],{"class":108},[102,1226,121],{"class":112},[102,1228,1229],{"class":104,"line":116},[102,1230,128],{"class":127},[102,1232,1233,1235,1237,1239,1241],{"class":104,"line":124},[102,1234,135],{"class":134},[102,1236,138],{"class":127},[102,1238,141],{"class":134},[102,1240,145],{"class":144},[102,1242,148],{"class":127},[102,1244,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275],{"class":104,"line":131},[102,1246,154],{"class":134},[102,1248,158],{"class":157},[102,1250,161],{"class":127},[102,1252,164],{"class":108},[102,1254,145],{"class":144},[102,1256,169],{"class":108},[102,1258,79],{"class":172},[102,1260,175],{"class":127},[102,1262,164],{"class":108},[102,1264,145],{"class":144},[102,1266,169],{"class":108},[102,1268,184],{"class":172},[102,1270,175],{"class":127},[102,1272,189],{"class":134},[102,1274,192],{"class":172},[102,1276,195],{"class":127},[102,1278,1279,1282,1284,1287,1289,1292,1295,1298,1301],{"class":104,"line":151},[102,1280,1281],{"class":134},"  auto",[102,1283,169],{"class":108},[102,1285,1286],{"class":127},"cur ",[102,1288,295],{"class":108},[102,1290,1291],{"class":108}," reinterpret_cast\u003Cconst",[102,1293,1294],{"class":134}," unsigned",[102,1296,1297],{"class":134}," char",[102,1299,1300],{"class":108}," *>",[102,1302,1303],{"class":127},"(r);\n",[102,1305,1306,1308,1310,1313,1315,1317,1319,1321,1323,1326,1328],{"class":104,"line":198},[102,1307,1281],{"class":134},[102,1309,169],{"class":108},[102,1311,1312],{"class":127},"end ",[102,1314,295],{"class":108},[102,1316,1291],{"class":108},[102,1318,1294],{"class":134},[102,1320,1297],{"class":134},[102,1322,1300],{"class":108},[102,1324,1325],{"class":127},"(r ",[102,1327,529],{"class":108},[102,1329,532],{"class":127},[102,1331,1332,1334,1336,1339,1341,1343,1345,1347,1349],{"class":104,"line":247},[102,1333,1281],{"class":134},[102,1335,169],{"class":108},[102,1337,1338],{"class":127},"testPtr ",[102,1340,295],{"class":108},[102,1342,1291],{"class":108},[102,1344,1294],{"class":134},[102,1346,1297],{"class":134},[102,1348,1300],{"class":108},[102,1350,1351],{"class":127},"(test);\n",[102,1353,1354],{"class":104,"line":253},[102,1355,128],{"class":127},[102,1357,1358,1361,1364,1367,1370,1373],{"class":104,"line":258},[102,1359,1360],{"class":108},"  for",[102,1362,1363],{"class":127}," (; cur ",[102,1365,1366],{"class":108},"!=",[102,1368,1369],{"class":127}," end; ",[102,1371,1372],{"class":108},"++",[102,1374,1375],{"class":127},"cur) {\n",[102,1377,1378,1381,1384,1387],{"class":104,"line":270},[102,1379,1380],{"class":108},"    if",[102,1382,1383],{"class":127}," (cur ",[102,1385,1386],{"class":108},"==",[102,1388,1389],{"class":127}," testPtr) {\n",[102,1391,1392,1395,1398],{"class":104,"line":285},[102,1393,1394],{"class":108},"      return",[102,1396,1397],{"class":204}," true",[102,1399,1400],{"class":127},";\n",[102,1402,1403],{"class":104,"line":309},[102,1404,1405],{"class":127},"    }\n",[102,1407,1408],{"class":104,"line":317},[102,1409,1410],{"class":127},"  }\n",[102,1412,1413,1415,1418],{"class":104,"line":352},[102,1414,201],{"class":108},[102,1416,1417],{"class":204}," false",[102,1419,1400],{"class":127},[102,1421,1422],{"class":104,"line":832},[102,1423,250],{"class":127},[102,1425,1426],{"class":104,"line":837},[102,1427,128],{"class":127},[102,1429,1430,1432,1434],{"class":104,"line":846},[102,1431,261],{"class":134},[102,1433,264],{"class":157},[102,1435,267],{"class":127},[102,1437,1438,1440,1442,1444],{"class":104,"line":871},[102,1439,273],{"class":134},[102,1441,276],{"class":127},[102,1443,279],{"class":204},[102,1445,282],{"class":127},[102,1447,1448,1450,1452,1454,1456,1458,1460,1462],{"class":104,"line":894},[102,1449,273],{"class":134},[102,1451,169],{"class":108},[102,1453,292],{"class":127},[102,1455,295],{"class":108},[102,1457,298],{"class":108},[102,1459,301],{"class":127},[102,1461,304],{"class":204},[102,1463,282],{"class":127},[102,1465,1466,1468],{"class":104,"line":930},[102,1467,273],{"class":134},[102,1469,314],{"class":127},[102,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495],{"class":104,"line":1472},21,[102,1474,320],{"class":144},[102,1476,323],{"class":127},[102,1478,326],{"class":108},[102,1480,329],{"class":144},[102,1482,332],{"class":127},[102,1484,326],{"class":108},[102,1486,158],{"class":157},[102,1488,161],{"class":127},[102,1490,341],{"class":108},[102,1492,344],{"class":127},[102,1494,279],{"class":204},[102,1496,349],{"class":127},[102,1498,1500],{"class":104,"line":1499},22,[102,1501,250],{"class":127},[70,1503,1505],{"id":1504},"risk-assessment","Risk Assessment",[1507,1508,1509,1510,1509,1540],"table",{},"\n  ",[1511,1512,1513,1514,1509],"thead",{},"\n    ",[1515,1516,1517,1518,1517,1522,1517,1525,1517,1528,1517,1531,1517,1534,1517,1537,1513],"tr",{},"\n      ",[1519,1520,1521],"th",{},"Rule",[1519,1523,1524],{},"Severity",[1519,1526,1527],{},"Likelihood",[1519,1529,1530],{},"Detectable",[1519,1532,1533],{},"Repairable",[1519,1535,1536],{},"Priority",[1519,1538,1539],{},"Level",[1541,1542,1513,1543,1509],"tbody",{},[1515,1544,1517,1545,1517,1549,1517,1552,1517,1555,1517,1558,1517,1560,1517,1566,1513],{},[1546,1547,1548],"td",{},"CTR54-CPP",[1546,1550,1551],{},"Medium",[1546,1553,1554],{},"Probable",[1546,1556,1557],{},"No",[1546,1559,1557],{},[1546,1561,1563],{"style":1562},"color: #27ae60;",[988,1564,1565],{},"P4",[1546,1567,1568],{"style":1562},[988,1569,1570],{},"L3",[1572,1573,1575],"h3",{"id":1574},"automated-detection","Automated Detection",[1507,1577,1580,1606],{"className":1578},[1579],"wrapped",[1511,1581,1582],{},[1515,1583,1586,1591,1596,1601],{"className":1584},[1585],"header",[1519,1587,1588],{},[39,1589,1590],{},"Tool",[1519,1592,1593],{},[39,1594,1595],{},"Version",[1519,1597,1598],{},[39,1599,1600],{},"Checker",[1519,1602,1603],{},[39,1604,1605],{},"Description",[1541,1607,1608,1644,1681,1709,1740,1788],{},[1515,1609,1612,1618,1628,1640],{"className":1610},[1611],"odd",[1546,1613,1614],{},[59,1615,1617],{"href":1616},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","Astrée",[1546,1619,1620],{},[1621,1622,1625],"div",{"className":1623},[1624],"content-wrapper",[39,1626,1627],{},"25.10",[1546,1629,1630],{},[1631,1632,1633,1634,1637,1638],"strong",{},"invalid_pointer_subtraction",[1635,1636],"br",{},"\ninvalid_pointer_comparison",[1635,1639],{},[1546,1641,1642],{},[1635,1643],{},[1515,1645,1648,1654,1660,1673],{"className":1646},[1647],"even",[1546,1649,1650],{},[59,1651,1653],{"href":1652},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[1546,1655,1656],{},[1621,1657,1659],{"className":1658},[1624],"9.1p0",[1546,1661,1662],{},[39,1663,1664,1669,1670],{},[1631,1665,1666,1667],{},"LANG.STRUCT.CUP",[1635,1668],{}," ",[1631,1671,1672],{},"LANG.STRUCT.SUP",[1546,1674,1675],{},[39,1676,1677,1678,1680],{},"Comparison of Unrelated Pointers",[1635,1679],{},"\nSubtraction of Unrelated Pointers",[1515,1682,1684,1690,1698,1705],{"className":1683},[1611],[1546,1685,1686],{},[59,1687,1689],{"href":1688},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[1546,1691,1692],{},[1621,1693,1695],{"className":1694},[1624],[39,1696,1697],{},"2025.2",[1546,1699,1700],{},[39,1701,1702],{},[1631,1703,1704],{},"DF2668, DF2761, DF2762, DF2763, DF2766, DF2767, DF2768",[1546,1706,1707],{},[1635,1708],{},[1515,1710,1712,1718,1724,1735],{"className":1711},[1647],[1546,1713,1714],{},[59,1715,1717],{"href":1716},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[1546,1719,1720],{},[1621,1721,1723],{"className":1722},[1624],"9.7.1",[1546,1725,1726],{},[39,1727,1728,1669,1731],{},[1631,1729,1730],{},"70 S, 87 S, 437 S, 438 S",[1631,1732,1733],{},[1635,1734],{},[1546,1736,1737],{},[39,1738,1739],{},"Enhanced Enforcement",[1515,1741,1743,1749,1756,1777],{"className":1742},[1611],[1546,1744,1745],{},[59,1746,1748],{"href":1747},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[1546,1750,1751],{},[1621,1752,1754],{"className":1753},[1624],[39,1755,1697],{},[1546,1757,1758],{},[39,1759,1760,1763,1765,1669,1770,1669,1773],{},[1631,1761,1762],{},"CERT_CPP-CTR54-a",[1635,1764],{},[1631,1766,1767,1768],{},"CERT_CPP-CTR54-b",[1635,1769],{},[1631,1771,1772],{},"CERT_CPP-CTR54-c",[1631,1774,1775],{},[1635,1776],{},[1546,1778,1779],{},[39,1780,1781,1782,1784,1785,1787],{},"Do not compare iterators from different containers",[1635,1783],{},"\nDo not compare two unrelated pointers",[1635,1786],{},"\nDo not subtract two pointers that do not address elements of the same array",[1515,1789,1791,1797,1805,1811],{"className":1790},[1647],[1546,1792,1793],{},[59,1794,1796],{"href":1795},"\u002Fsei-cert-c-coding-standard\u002Fback-matter\u002Fee-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[1546,1798,1799],{},[1621,1800,1802],{"className":1801},[1624],[39,1803,1804],{},"R2025b",[1546,1806,1807],{},[59,1808,1810],{"href":1809},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcctr54cpp.html","CERT C++: CTR54-CPP",[1546,1812,1813],{},"Checks for subtraction or comparison between iterators from different containers (rule partially covered).",[1572,1815,1817],{"id":1816},"related-vulnerabilities","Related Vulnerabilities",[39,1819,1820,1821,1825,1826,638],{},"Search for ",[59,1822,1824],{"href":1823},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerabi","vulnerabilities"," resulting from the violation of this rule on the ",[59,1827,1831],{"href":1828,"rel":1829},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+CTR36-CPP",[1830],"nofollow","CERT website",[70,1833,1835],{"id":1834},"related-guidelines","Related Guidelines",[1507,1837,1838,1846],{},[1511,1839,1840],{},[1515,1841,1842,1844],{},[1519,1843],{},[1519,1845],{},[1541,1847,1848,1861],{},[1515,1849,1850,1855],{},[1546,1851,1852],{},[59,1853,1854],{"href":17},"SEI CERT C Coding Standard",[1546,1856,1857],{},[59,1858,1860],{"href":1859},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Farrays-arr\u002Farr36-c","ARR36-C. Do not subtract or compare two pointers that do not refer to the same array",[1515,1862,1863,1870],{},[1546,1864,1865],{},[59,1866,1869],{"href":1867,"rel":1868},"http:\u002F\u002Fcwe.mitre.org\u002F",[1830],"MITRE CWE",[1546,1871,1872,1877],{},[59,1873,1876],{"href":1874,"rel":1875},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F469.html",[1830],"CWE-469"," , Use of Pointer Subtraction to Determine Size",[70,1879,1881],{"id":1880},"bibliography","Bibliography",[1507,1883,1885],{"className":1884},[1579],[1541,1886,1887,1904],{},[1515,1888,1890,1898],{"className":1889},[1611],[1546,1891,1892,1893,1897],{},"[ ",[59,1894,1896],{"href":1895},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Banahan03","Banahan 2003"," ]",[1546,1899,1900,1901,1903],{},"Section 5.3, \"Pointers\"",[1635,1902],{},"\nSection 5.7, \"Expressions Involving Pointers\"",[1515,1905,1907,1911],{"className":1906},[1647],[1546,1908,1892,1909,1897],{},[59,1910,67],{"href":66},[1546,1912,1913],{},[39,1914,1915,1916,1918,1919,1921],{},"Subclause 5.7, \"Additive Operators\"",[1635,1917],{},"\nSubclause 5.9, \"Relational Operators\"",[1635,1920],{},"\nSubclause 20.9.5, \"Comparisons\"",[1923,1924],"hr",{},[39,1926,1927,1669,1934,1669,1940],{},[59,1928,1930],{"href":1929},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr53-cpp",[1931,1932],"img",{"src":1933},"\u002Fattachments\u002F88046682\u002F88480621.png",[59,1935,1937],{"href":1936},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002F",[1931,1938],{"src":1939},"\u002Fattachments\u002F88046682\u002F88475556.png",[59,1941,1943],{"href":1942},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp",[1931,1944],{"src":1945},"\u002Fattachments\u002F88046682\u002F88475555.png",[1947,1948,1949],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sz2Vg, html code.shiki .sz2Vg{--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sTHNf, html code.shiki .sTHNf{--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .s-m8C, html code.shiki .s-m8C{--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}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":98,"searchDepth":116,"depth":116,"links":1951},[1952,1953,1954,1955,1956,1957,1961,1962],{"id":72,"depth":116,"text":73},{"id":357,"depth":116,"text":73},{"id":615,"depth":116,"text":73},{"id":935,"depth":116,"text":73},{"id":1198,"depth":116,"text":1199},{"id":1504,"depth":116,"text":1505,"children":1958},[1959,1960],{"id":1574,"depth":124,"text":1575},{"id":1816,"depth":124,"text":1817},{"id":1834,"depth":116,"text":1835},{"id":1880,"depth":116,"text":1881},"When two pointers are subtracted, both must point to elements of the same array object or to one past the last element of the array object; the result is the difference of the subscripts of the two array elements. Similarly, when two iterators are subtracted (including via std::distance() ), both iterators must refer to the same container object or must be obtained via a call to end() (or cend() ) on the same container object.","md",{"tags":1966},[1967,1968,1969,1970,1971,1972,1973],"review","ctr","ptc","review-dms","cwe-469","rule","review-ajb","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp",{"title":30,"description":1963},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp","qWHZ_hARV822Qzk-RL-03i97do-dXGeFpvVOVRaGb5c",[1979,1982],{"title":1980,"path":1929,"stem":1981,"children":-1},"CTR53-CPP. Use valid iterator ranges","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F05.ctr53-cpp",{"title":1983,"path":1942,"stem":1984,"children":-1},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",[1986],{"title":1987,"path":1988,"stem":1989,"children":1990},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1991,1992,2059,2454,2669,2679],{"title":1987,"path":1988,"stem":1989},{"title":1993,"path":1994,"stem":1995,"children":1996},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1997,1998],{"title":1993,"path":1994,"stem":1995},{"title":1999,"path":2000,"stem":2001,"children":2002},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[2003,2004,2008,2012,2016,2020,2024,2028,2032,2036,2040,2044,2048,2052,2056],{"title":1999,"path":2000,"stem":2001},{"title":2005,"path":2006,"stem":2007},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":2009,"path":2010,"stem":2011},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":2013,"path":2014,"stem":2015},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":2017,"path":2018,"stem":2019},"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":2021,"path":2022,"stem":2023},"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":2025,"path":2026,"stem":2027},"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":2029,"path":2030,"stem":2031},"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":2033,"path":2034,"stem":2035},"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":2037,"path":2038,"stem":2039},"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":2041,"path":2042,"stem":2043},"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":2045,"path":2046,"stem":2047},"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":2049,"path":2050,"stem":2051},"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":2053,"path":2054,"stem":2055},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":1575,"path":2057,"stem":2058},"\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":2060,"path":2061,"stem":2062,"children":2063},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[2064,2065,2087,2121,2154,2204,2262,2324,2338,2348,2386,2412],{"title":2060,"path":2061,"stem":2062},{"title":2066,"path":2067,"stem":2068,"children":2069},"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",[2070,2071,2075,2079,2083],{"title":2066,"path":2067,"stem":2068},{"title":2072,"path":2073,"stem":2074},"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":2076,"path":2077,"stem":2078},"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":2080,"path":2081,"stem":2082},"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":2084,"path":2085,"stem":2086},"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":2088,"path":2089,"stem":2090,"children":2091},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[2092,2093,2097,2101,2105,2109,2113,2117],{"title":2088,"path":2089,"stem":2090},{"title":2094,"path":2095,"stem":2096},"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":2098,"path":2099,"stem":2100},"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":2102,"path":2103,"stem":2104},"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":2106,"path":2107,"stem":2108},"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":2110,"path":2111,"stem":2112},"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":2114,"path":2115,"stem":2116},"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":2118,"path":2119,"stem":2120},"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":2122,"path":2123,"stem":2124,"children":2125},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[2126,2127,2131,2135,2139,2140,2141,2142,2146,2150],{"title":2122,"path":2123,"stem":2124},{"title":2128,"path":2129,"stem":2130},"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":2132,"path":2133,"stem":2134},"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":2136,"path":2137,"stem":2138},"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":1980,"path":1929,"stem":1981},{"title":30,"path":1974,"stem":1976},{"title":1983,"path":1942,"stem":1984},{"title":2143,"path":2144,"stem":2145},"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":2147,"path":2148,"stem":2149},"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":2151,"path":2152,"stem":2153},"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":2155,"path":2156,"stem":2157,"children":2158},"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",[2159,2160,2164,2168,2172,2176,2180,2184,2188,2192,2196,2200],{"title":2155,"path":2156,"stem":2157},{"title":2161,"path":2162,"stem":2163},"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":2165,"path":2166,"stem":2167},"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":2169,"path":2170,"stem":2171},"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":2173,"path":2174,"stem":2175},"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":2177,"path":2178,"stem":2179},"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":2181,"path":2182,"stem":2183},"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":2185,"path":2186,"stem":2187},"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":2189,"path":2190,"stem":2191},"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":2193,"path":2194,"stem":2195},"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":2197,"path":2198,"stem":2199},"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":2201,"path":2202,"stem":2203},"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":2205,"path":2206,"stem":2207,"children":2208},"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",[2209,2210,2214,2218,2222,2226,2230,2234,2238,2242,2246,2250,2254,2258],{"title":2205,"path":2206,"stem":2207},{"title":2211,"path":2212,"stem":2213},"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":2215,"path":2216,"stem":2217},"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":2219,"path":2220,"stem":2221},"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":2223,"path":2224,"stem":2225},"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":2227,"path":2228,"stem":2229},"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":2231,"path":2232,"stem":2233},"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":2235,"path":2236,"stem":2237},"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":2239,"path":2240,"stem":2241},"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":2243,"path":2244,"stem":2245},"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":2247,"path":2248,"stem":2249},"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":2251,"path":2252,"stem":2253},"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":2255,"path":2256,"stem":2257},"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":2259,"path":2260,"stem":2261},"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":2263,"path":2264,"stem":2265,"children":2266},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[2267,2268,2272,2276,2280,2284,2288,2292,2296,2300,2304,2308,2312,2316,2320],{"title":2263,"path":2264,"stem":2265},{"title":2269,"path":2270,"stem":2271},"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":2273,"path":2274,"stem":2275},"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":2277,"path":2278,"stem":2279},"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":2281,"path":2282,"stem":2283},"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":2285,"path":2286,"stem":2287},"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":2289,"path":2290,"stem":2291},"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":2293,"path":2294,"stem":2295},"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":2297,"path":2298,"stem":2299},"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":2301,"path":2302,"stem":2303},"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":2305,"path":2306,"stem":2307},"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":2309,"path":2310,"stem":2311},"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":2313,"path":2314,"stem":2315},"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":2317,"path":2318,"stem":2319},"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":2321,"path":2322,"stem":2323},"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":2325,"path":2326,"stem":2327,"children":2328},"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",[2329,2330,2334],{"title":2325,"path":2326,"stem":2327},{"title":2331,"path":2332,"stem":2333},"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":2335,"path":2336,"stem":2337},"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":2339,"path":2340,"stem":2341,"children":2342},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[2343,2344],{"title":2339,"path":2340,"stem":2341},{"title":2345,"path":2346,"stem":2347},"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":2349,"path":2350,"stem":2351,"children":2352},"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",[2353,2354,2358,2362,2366,2370,2374,2378,2382],{"title":2349,"path":2350,"stem":2351},{"title":2355,"path":2356,"stem":2357},"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":2359,"path":2360,"stem":2361},"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":2363,"path":2364,"stem":2365},"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":2367,"path":2368,"stem":2369},"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":2371,"path":2372,"stem":2373},"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":2375,"path":2376,"stem":2377},"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":2379,"path":2380,"stem":2381},"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":2383,"path":2384,"stem":2385},"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":2387,"path":2388,"stem":2389,"children":2390},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[2391,2392,2396,2400,2404,2408],{"title":2387,"path":2388,"stem":2389},{"title":2393,"path":2394,"stem":2395},"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":2397,"path":2398,"stem":2399},"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":2401,"path":2402,"stem":2403},"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":2405,"path":2406,"stem":2407},"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":2409,"path":2410,"stem":2411},"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":2413,"path":2414,"stem":2415,"children":2416},"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",[2417,2418,2422,2426,2430,2434,2438,2442,2446,2450],{"title":2413,"path":2414,"stem":2415},{"title":2419,"path":2420,"stem":2421},"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":2423,"path":2424,"stem":2425},"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":2427,"path":2428,"stem":2429},"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":2431,"path":2432,"stem":2433},"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":2435,"path":2436,"stem":2437},"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":2439,"path":2440,"stem":2441},"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":2443,"path":2444,"stem":2445},"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":2447,"path":2448,"stem":2449},"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":2451,"path":2452,"stem":2453},"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":2455,"path":2456,"stem":2457,"children":2458},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[2459,2460,2464,2467,2652,2665],{"title":2455,"path":2456,"stem":2457},{"title":2461,"path":2462,"stem":2463},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":2465,"path":981,"stem":2466},"BB. Definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":2468,"path":2469,"stem":2470,"children":2471},"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",[2472,2473,2475,2479,2483,2487,2491,2495,2499,2503,2507,2511,2515,2517,2521,2525,2529,2533,2537,2541,2545,2549,2553,2555,2559,2563,2567,2570,2574,2577,2581,2584,2588,2592,2596,2600,2604,2608,2612,2616,2620,2624,2628,2632,2636,2640,2644,2648],{"title":2468,"path":2469,"stem":2470},{"title":1617,"path":1616,"stem":2474},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":2476,"path":2477,"stem":2478},"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":2480,"path":2481,"stem":2482},"Axivion Bauhaus Suite","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":2484,"path":2485,"stem":2486},"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":2488,"path":2489,"stem":2490},"Clang","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":2492,"path":2493,"stem":2494},"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":2496,"path":2497,"stem":2498},"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":2500,"path":2501,"stem":2502},"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":2504,"path":2505,"stem":2506},"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":2508,"path":2509,"stem":2510},"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":2512,"path":2513,"stem":2514},"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":1653,"path":1652,"stem":2516},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":2518,"path":2519,"stem":2520},"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":2522,"path":2523,"stem":2524},"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":2526,"path":2527,"stem":2528},"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":2530,"path":2531,"stem":2532},"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":2534,"path":2535,"stem":2536},"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":2538,"path":2539,"stem":2540},"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":2542,"path":2543,"stem":2544},"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":2546,"path":2547,"stem":2548},"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":2550,"path":2551,"stem":2552},"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":1689,"path":1688,"stem":2554},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":2556,"path":2557,"stem":2558},"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":2560,"path":2561,"stem":2562},"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":2564,"path":2565,"stem":2566},"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":2568,"path":1716,"stem":2569},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":2571,"path":2572,"stem":2573},"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":2575,"path":1747,"stem":2576},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":2578,"path":2579,"stem":2580},"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":1796,"path":2582,"stem":2583},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":2585,"path":2586,"stem":2587},"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":2589,"path":2590,"stem":2591},"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":2593,"path":2594,"stem":2595},"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":2597,"path":2598,"stem":2599},"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":2601,"path":2602,"stem":2603},"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":2605,"path":2606,"stem":2607},"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":2609,"path":2610,"stem":2611},"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":2613,"path":2614,"stem":2615},"RuleChecker","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":2617,"path":2618,"stem":2619},"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":2621,"path":2622,"stem":2623},"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":2625,"path":2626,"stem":2627},"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":2629,"path":2630,"stem":2631},"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":2633,"path":2634,"stem":2635},"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":2637,"path":2638,"stem":2639},"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":2641,"path":2642,"stem":2643},"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":2645,"path":2646,"stem":2647},"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":2649,"path":2650,"stem":2651},"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":2653,"path":2654,"stem":2655,"children":2656},"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",[2657,2658,2662],{"title":2653,"path":2654,"stem":2655},{"title":2659,"path":2660,"stem":2661},"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":1869,"path":2663,"stem":2664},"\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":2666,"path":2667,"stem":2668},"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":2670,"path":2671,"stem":2672,"children":2673},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2674,2675],{"title":2670,"path":2671,"stem":2672},{"title":2676,"path":2677,"stem":2678},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2680,"path":2681,"stem":2682},"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",1775657779527]