Почему std::expected перегружает все квалификаторы ссылочного типа для многих своих функций-членов? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему std::expected перегружает все квалификаторы ссылочного типа для многих своих функций-членов? [дубликат]

Сообщение Anonymous »

Рассмотрим, например, определение std::expected::value. Имеет 4 перегрузки:

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

constexpr T& value() &;
constexpr const T& value() const&;
constexpr T&& value() &&;
constexpr const T&& value() const&&;
Несколько других функций-членов перегружаются таким же образом.
Я работаю над классом, который будет иметь аналогичный API, поэтому мне нужно чтобы понять: почему это необходимо?
Почему необходимы перегрузки move-reference поверх const и не- перегрузки для обычных ссылок?
Иногда в стандарте перечисляются подобные прототипы только для того, чтобы на самом деле требовалось меньше перегрузок. Но стандартная библиотека MSVC на самом деле имеет разные перегрузки для каждой комбинации, например, соответствующие std::expected::value.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -of-its-me
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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