Spring Security авторизует запрос для URL & amp; метод с использованием HttpSecurity

В конечном счете, в этом вопросе есть много деталей, которые не актуальны. Мы можем свести его к вопросу о достоверности:

struct A {
    something_unmovable m;

    void operator()() {
        delete this;
        // do something with m
    }
};

И спросить об этом. В конце концов, влияние resize() заключается в вызове деструктора объекта mid-function-call.

Стандарт сообщает нам в [class.cdtor], что:

< blockquote>

Для объекта с нетривиальным деструктором, ссылаясь на любой нестатический член или базовый класс объекта после завершения выполнения деструктора, приводит к неопределенному поведению.

So если деструктор something_unmovable является нетривиальным (что сделало бы деструктор A - или ваш лямбда - нетривиальным), любая ссылка на m после вызова деструктора - это неопределенное поведение. Если something_unmovable имеет тривиальный деструктор, то ваш код вполне приемлем. Если вы не выполняете что-либо после delete this (resize() в своем вопросе), то это совершенно правильное поведение.

До сих пор доступен доступ из вектор?

Да, функтор в vec[0] по-прежнему будет иметь m. Это может быть оригинальная лямбда - или это может быть копия оригинальной лямбды. Но будет m так или иначе.

30
задан ilopezluna 6 March 2015 в 20:24
поделиться