Почему std::expected требует, чтобы T был допускающим копирование, если он допускает копирование?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Почему std::expected требует, чтобы T был допускающим копирование, если он допускает копирование?

Сообщение Гость »


If we have a type T that is not copy-constructible but copy-assignable:

struct T { T() = default; ~T() = default; T(const T&) = delete; T(T&&) = default; T& operator=(const T&) = default; T& operator=(T&&) = default; }; then std::is_copy_assignable_v is obviously true, but std::is_copy_assignable_v is false.

This behavior is described on cppreference: std::expected::operator=

What is the rationale behind this? Why couldn't we allow std::expected to be copy-assignable if T is copy-assignable, even if it is not copy-constructible? The same question also applies to move assignability.


Источник: https://stackoverflow.com/questions/780 ... is-copy-as
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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