Почему мы не можем использовать прогнозы, которые создают не мощные значения с ограниченными алгоритмами?C++

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

Сообщение Anonymous »

Рассмотрим следующий минимальный пример: < /p>

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

#include 

struct nm {
int val;
nm(int val) : val(val) {}
nm(nm&&) = delete;
friend auto operator(const nm&, const nm&) = default;
};

int main() {
int arr[] = { 1, 2, 3 };
std::ranges::sort(arr, {}, [](int x) { return nm{ x }; });
}
Этот код не компилируется (в соответствии со стандартом), потому что std :: sortable ограничение std :: ranges :: sort не выполнено. This is because std::sortable requires std::projected, which requires std::indirectly_regular_unary_invocable, which in turn requires std::common_reference_with, which indirectly (after a few more steps) requires std::is_convertible, which is false, because the type nm не является подвижным.
Мой вопрос в следующем: это просто дефект стандарта, или существует основная причина, по которой прогнозы, возвращающие значения не мощных типов>

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

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

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

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

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

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

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