|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
|||||||||||
Оболочка для возвращаемого значения функции и std::optional03.03.2023, 14:02. Показов 2477. Ответов 20
Добрый день!
Есть вот такой код: Кликните здесь для просмотра всего текста
Нужно сделать оболочку для возвращаемого значения функции, даже если оно void. Также нужно уведомить пользователя о том, что было исключение, для этого используется std::option. Пока что так: Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 03.03.2023, 14:02 | |
|
Ответы с готовыми решениями:
20
Ключевое слово const для возвращаемого значения из функции Самый простой PHP код для вызова хранимой функции PostgreSQL и вывода возвращаемого значения? std::optional<T> при std::is_destructible_v<T> == false |
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 03.03.2023, 17:49 | |||||||
Сообщение было отмечено NanoCase как решение
Решение
1
|
|||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
||||||
| 03.03.2023, 22:02 [ТС] | ||||||
|
Хорошее решение. Но в языке следующий код является валидным:
Кликните здесь для просмотра всего текста
Думаю что можно как-то сыграть от этого при помощи SFINAE и приведений типов.
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 03.03.2023, 22:37 | ||
if constexpr, либо то же самое, только через специализацию какого-нибудь "инвокера".
1
|
||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
|
| 03.03.2023, 22:52 [ТС] | |
|
Понял. Спасибо за ответ!
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||
| 08.03.2023, 21:51 | |||||||
Сообщение было отмечено zayats80888 как решение
РешениеВот без специализаций и условий.
2
|
|||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
|
| 09.03.2023, 23:54 [ТС] | |
|
DrOffset, т.е. перегружая оператор запятая у нас появляется возможность вывести возвращаемое значение функции в виде шаблона и если на 7 строчке провал подстановки то мы инициализируем Ret пустышкой?
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 10.03.2023, 00:52 | ||
|
И на 19 строчке в конструктор optional нужно передать объект Dummy, иначе результат неотличим от того, что в строке 22.
2
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 10.03.2023, 06:53 | ||
1
|
||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
||||||
| 11.03.2023, 22:14 [ТС] | ||||||
|
zayats80888 DrOffset, продолжаю улучшать оболочку, хочу чтобы функцию можно было вызывать из объекта, т.е. сохраняем в классе указатель на вызывающую сторону, когда хотим вызвать проверяем указатель на nullptr и вызываем соответствующий вариант функции. Но такой подход походу не работает, компилятор выдает ошибку. Можете направить меня в нужную сторону, пожалуйста
Кликните здесь для просмотра всего текста
0
|
||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 11.03.2023, 22:16 | |
|
NanoCase, у вас же есть std::function, нет нужды вводить разграничение на уровне вызова, когда можно его спрятать на уровне создания функтора.
1
|
|
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
|
| 11.03.2023, 22:32 [ТС] | |
|
DrOffset, в std::function можно указывать вызывающую сторону?
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||
| 11.03.2023, 22:38 | |||||||
|
Вот вариант:
1
|
|||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
||||||
| 12.03.2023, 00:44 [ТС] | ||||||
|
DrOffset, Вроде разобрался. Спасибо!
Добавлено через 1 час 25 минут DrOffset, проблемка вылезла, std::bind нужны placeholders на все аргументы вызываемой функции, вроде как решается заменой bind на аналогичную лямбду, с захватом функции и caller. Вот решение близкое к правде, но он ругается на сам вызов функции в лямбде Кликните здесь для просмотра всего текста
0
|
||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||||
| 12.03.2023, 00:55 | ||||||
|
NanoCase, синтаксис вызова через указатель на метод другой. Плюс забыли forward
1
|
||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
|
| 12.03.2023, 02:46 [ТС] | |
|
DrOffset, Заработало, спасибо
![]() Добавлено через 1 час 8 минут DrOffset, у меня ещё вопрос созрел(возможно глупый). Допустим я хочу передать в качестве параметра функции shared_ptr, который должен скопироваться в оператор() и следовательно в пользовательскую функцию. Можно ли это решить без перегрузок оператора() и тотального переписывания кода?
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||
| 12.03.2023, 12:40 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
||||||
| 12.03.2023, 13:49 [ТС] | ||||||
|
DrOffset, gcc 12.2 ошибку выдает на ваш код:
0
|
||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||||
| 12.03.2023, 14:03 | ||||||
|
NanoCase, так не на мой, а на ваш. Вы же сами класс изменили. У вас оператор теперь не соответствует новому подходу. Надо так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 26
|
||||||
| 12.03.2023, 14:14 [ТС] | ||||||
|
DrOffset, я думал вы не меняли описание враппера. дело в том что такая реализация будет принимать все по значению, даже если нужно чтобы оператор принял что то по ссылке. но я уже понял что перегружать по универсальной ссылке смысла мало. решил это добавлением дополнительного уровня косвенности, что то типо такого:
0
|
||||||
| 12.03.2023, 14:14 | |
|
Помогаю со студенческими работами здесь
20
Тип возвращаемого значения функции Вывод возвращаемого значения функции
Структура в качестве возвращаемого значения функции Ошибка с приведением возвращаемого из функции значения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|