Пространства имён
Варианты
Действия

C++ именованные требования: CopyConstructible

Материал из cppreference.com
< cpp‎ | named req
 
 
Именованные требования в C++
Основные
CopyConstructible
Свойства типа
В масштабах библиотеки
Контейнер
Элементы контейнера
(C++11)

Итератор
Потоковый Ввод/Вывод
Форматтеры
(C++20)
Случайные Числа
(C++11)    
Конкуренция
(C++11)
(C++11)
Диапазоны
Другое
(C++11)


 

Определяет, что экземпляр типа может быть создан копированием из lvalue expression.

[править] Требования

Тип T удовлетворяет CopyConstructible если

Даны

  • v, lvalue выражение типа T или const T или rvalue выражение типа const T
  • u, произвольный идентификатор

Следующие выражения должны быть допустимыми и иметь указанные эффекты

Выражение Постусловие
T u = v; Значение u равнозначно значению v.

Значение v остается неизменным

T(v) Значение T(v) равнозначно значениюv.

Значение v остается неизменным.

Выражение v.~T() также должно быть допустимым, и, для левостороннего значения v, выражение &v должно иметь тип T* или const T* и должно вычислять адрес v

[править] Заметки

До C++11, классы, которые переопределяли operator& не были CopyConstructible и поэтому их нельзя было использовать в STL. Начиная с C++11, стандартная библиотека использует std::addressof всякий раз, когда требуется адрес объекта.

[править] Смотри также

проверяет, есть ли у типа конструктор копирования
(шаблон класса) [править]
указывает, что объект типа может быть создан копированием и перемещением
(концепт) [править]