Отбрасывает ли const из * это вызывающее неопределенное поведение? - PullRequest
0 голосов
/ 04 мая 2018

Следующий код компилируется. Кажется, работает нормально.

Но может ли это привести к неопределенному поведению?

Я хочу выбросить константу *this.

Это позволяет const my_iterator изменять данные, на которые он указывает.

Тест:

class A {
public:
    A(const int x) : x_(x) {}
    void set_x(int x) { x_ = x; }
    void set_x2(const int x) const {
        const_cast<A&>(*this).set_x(x);
    }
    int x_;
};

int main() {
    A a(10);
    a.set_x2(100);
}

1 Ответ

0 голосов
/ 04 мая 2018

Ваш пример не является неопределенным поведением, потому что a не const. Однако, если бы a было const, это было бы:

int main() {
    const A a(10);
    a.set_x2(100);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...