Код: Выделить всё
template
class Optional
{
public:
~Optional() requires (!std::is_trivially_destructible_v);
~Optional() = default;
};
В конце определения класса разрешение перегрузки выполняется среди проспективных деструкторов, объявленных в этом классе с пустым списком аргументов, чтобы выбрать Destructor для Class>, также известный как отбор Destructor. не удас.
Код: Выделить всё
[basic.def.odr]< /blockquote>
Итак, мой вопрос - если есть несколько проспективных деструкторов, и у них должен быть пустой список аргументов, тогда как разрешение перегрузки решает, какой проспективный деструктор становится выбранным деструктором? C ++ 20? Принятый ответ на 1 -й гласит: < /p>
какое объявление деструктора выживает, определяется позже, согласно части указанного вами стандарта. Решение для перегрузки требует замены шаблонов на все «будущие деструкторы». Это вызывает любые такие деструкторы, чьи требуют положения не исчезнут. Если этот процесс решается до одного деструктора, то это фактический деструктор. и если он разрешается несколькими деструкторами, то код плохо образуется. Или разрешение перегрузки считает, что одно «лучше», чем другое? Я что -то упускаю?
Подробнее здесь: https://stackoverflow.com/questions/797 ... estructors
Мобильная версия