Как разрешение перегрузки выбирает из нескольких потенциальных деструкторов?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как разрешение перегрузки выбирает из нескольких потенциальных деструкторов?

Сообщение Anonymous »

После просмотра этого поста: Если в классе есть деструктор, объявленный с необходимым пунктом, который оценивается в False, почему класс не тривиально разрушаем? У меня есть отдельный вопрос, и я еще не нашел для него хорошего ответа.

Код: Выделить всё

template
class Optional
{
public:
~Optional() requires (!std::is_trivially_destructible_v);
~Optional() = default;
};
Предполагая, что шаблон создан экземпляр, и требуется ограничение выполнено, что означает, что будет 2 проспективных деструктора, правильно? Согласно стандарту C ++ в [class.dtor] < /code>: < /p>

В конце определения класса разрешение перегрузки выполняется среди проспективных деструкторов, объявленных в этом классе с пустым списком аргументов, чтобы выбрать Destructor для Class>, также известный как отбор Destructor. не удас.

Код: Выделить всё

[basic.def.odr]
) из выбранного деструктора и, в частности, выбранного деструктора может быть удален ([dcl.fct.def.delete]< /code>). < /p>
< /blockquote>
Итак, мой вопрос - если есть несколько проспективных деструкторов, и у них должен быть пустой список аргументов, тогда как разрешение перегрузки решает, какой проспективный деструктор становится выбранным деструктором? C ++ 20? Принятый ответ на 1 -й гласит: < /p>

какое объявление деструктора выживает, определяется позже, согласно части указанного вами стандарта. Решение для перегрузки требует замены шаблонов на все «будущие деструкторы». Это вызывает любые такие деструкторы, чьи требуют положения не исчезнут. Если этот процесс решается до одного деструктора, то это фактический деструктор. и если он разрешается несколькими деструкторами, то код плохо образуется. Или разрешение перегрузки считает, что одно «лучше», чем другое? Я что -то упускаю?

Подробнее здесь: https://stackoverflow.com/questions/797 ... estructors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»