Насколько я понимаю, 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
Сделать предъявляемую концепцию более точной в отношении категории значения аргумента ⇐ C++
Программы на C++. Форум разработчиков
1751990076
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 )
Подробнее здесь: [url]https://stackoverflow.com/questions/79694178/making-an-invocable-concept-more-accurate-with-respect-to-argument-value-categor[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия