Cześć, w jednym programie znalazłem coś niepokojącego. Wychodzi na to, że stringi są porównywane po adresach.
Wygląda to mniej więcej tak, że najpierw są definiowane stałe stringi:
const string START;
const string STR_1;
const string STR_2;
//...i tak dalej
const string END;
A następnie są one porównywane mniej więcej w taki sposób:
const string * str = &STR_1;
if((str > &START) && (str < &END))
{
}
To jest nieco bardziej zaowaluowane (makra itd), ale właśnie rozwija się wszystko do postaci jak wyżej. Czy coś takiego ma prawo zadziałać? Wiem, że nie powinno się w taki sposób porównywać adresów, ale pisali to ludzie mądrzejsi niż ja i może są jakieś kruczki z tymi stałymi?