Почему удаление функции необходима, когда вы определяете объект точки настройки?C++

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

Сообщение Anonymous »

Из libstdc ++ заголовок:

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

  namespace ranges
{
namespace __cust_swap
{
template void swap(_Tp&, _Tp&) = delete;
Из MS-STL заголовок:

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

namespace ranges {
namespace _Swap {
template 
void swap(_Ty&, _Ty&) = delete;
Я никогда не встречался = delete; вне контекста, в котором вы хотите запретить вызов для копирования/перемещения назначения/ctor.
< P> было любопытно, если это было необходимо, поэтому я прокомментировал часть = DELETE; из библиотеки, как это:

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

// template void swap(_Tp&, _Tp&) = delete;
< /code>
, чтобы увидеть, компилируется ли следующий тестовый пример. < /p>
#include 
#include 

struct dummy {
friend void swap(dummy& a, dummy& b) {
std::cout  именно в этом контексте ?> 

Подробнее здесь: [url]https://stackoverflow.com/questions/63542410/why-is-deleting-a-function-necessary-when-youre-defining-customization-point-ob[/url]
Ответить

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

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

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

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

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