Hlavní navigace

Názor ke článku Bezpečné programování v C++ II od Jirka P - [22] Bohužel, bingo se koná, protože to, že...

  • 21. 3. 2009 13:09

    Jirka P (neregistrovaný)

    [22] Bohužel, bingo se koná, protože to, že funkce filter() bere konstantní refernci na list ani to, že func() bere konstantní refernci na objekt, nezaručuje že se během volání funkce func() nezmění. Nedefinováné chování zmiňuji proto, že dost příspěvků tady mluví o měnění it, přetečení mezí polí, přetečení integeru (jen znaménkové typy) - a to je právě nedefinované chování. MMCH, funkce func() může filter() donutit k nedefinovanému chování, konkrétně porovnání iterátorů z různých seznamů a následně dereference past-the-end iterátoru, přičemž func() se nedefinovaného chování nedopustí. Víte jak?

    [21] Ale v Javě by to bylo úplně stejné. Jediné, co by pomohlo, by byla referenční integrita ve smyslu funkcionálních jazyků.