Почему удаление функции необходима, когда вы определяете объект точки настройки?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]

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