Сделать предъявляемую концепцию более точной в отношении категории значения аргументаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сделать предъявляемую концепцию более точной в отношении категории значения аргумента

Сообщение Anonymous »

Насколько я понимаю, std :: uldable рассматривает аргументы Callable как ссылки на типы args_type .
Как следствие, std :: uldable - это правда , тогда как я бы ожидал false : my -callable - это функция, возвращающая void и std :: unique_ptr как аргумент и std :: std -a Argiving a at a Ararge a at at a Ararge a at a Ararge> at at at at a at a at a at a at a at a at a at a at a at a at a at a at a at a a a a a a a angirge std :: ulious_ptr .
Но, как показано ниже, если тип аргумента используется только для перемещения, я не могу копировать его с помощью Lvalue или ссылки LVALUE.
#include
#include

// unexpected in my opinion
// static_assert(!std::invocable);
static_assert(!std::invocable);
static_assert(std::invocable);

void foo(std::unique_ptr) {}

int main() {
[[maybe_unused]] std::unique_ptr p1 = std::unique_ptr(new int);
[[maybe_unused]] std::unique_ptr& r1 = p1;
// OK not copyable type
// foo(p1);
// foo(r1);
foo(std::unique_ptr(new int));
}

live
Можно ли сделать концепцию , которая была бы правильной в отношении копирования/перемещения семантического? (Таким образом, вопрос связан с любым типом с конкретным копированием/перемещением Semantic, не только std :: unique_ptr )

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

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

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

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

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

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

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