Прочитав много сообщений об этом, я хочу уточнить следующий вопрос:
A* a = new A();
A* b = a;
delete a;
A* c = a; //illegal - I know it (in c++ 11)
A* d = b; //I suppose it legal, is it true?
Итак, вопрос заключается в использовании значения копии удаленных указателей.
Я читал, что в С++ 11 чтение значения a приводит к undefined behavour - но как насчет считывания значения b?
Попытка прочитать значение указателя (примечание: это отличается от разыменование его) вызывает поведение, определяемое реализацией, поскольку С++ 14, который может включать в себя создание сбоя во время выполнения. (В С++ 11 это было undefined) Что происходит с самим указателем после удаления?