Если вы приехали сюда из -за названия, этот вопрос возник, потому что я пропустил части в стандарте, который написал ... < /p>
Когда вызывается коратика, копия создается для каждого параметра Coroutine в начале тела замены. Для параметра
, исходное объявление которого указано тип CV T,
14.1 Если t является эталонным типом, копия является ссылкой типа CV T, связанного с тем же объектом, что и параметр;
14.2 В противном случае копия является переменной типа CV T с автоматическим продолжительностью хранения, который прямо инициализируется из xvalue типа t
witring ramer-ravereter. /> < /ol>
< /blockquote>
В дальнейшем Pi-это lvalue типа Pi, где p1 обозначает параметр объекта
, а Pi+1 обозначает функцию ITH-необъективной функции
для параметра Implice-члена, а Pi denots
ITH-функция в противном случае. Для неявного элемента объекта
функция Q1 - это lvalue, которая обозначает *это; Любой другой Qi-это
lvalue, которая обозначает копию параметров, соответствующую Pi, < /p>
< /blockquote>
stronge-arguments-arguments, определяется следующим образом: перегрузка
Решение Q1 выполняется в конструкции обещания, созданный
aterding at. Если найден жизнеспособный конструктор
( Quover.match.iable]), то, то есть обещание-аргументы (Q1,…,
qn), в противном случае обещание-конструкторы-аргументы пусты, < /p>
< /blockquote>
Я делаю это редактирование с момента моего исходного. Библиотеки так вряд ли будут полезны для кого -либо еще. класс, в котором каждый метод - это коратика, но находится на уровне бизнес -логики, поэтому только одна коратика может быть «в полете», так сказать, одновременно.class MyClass;
class CoroutineReturnType {
std::coroutine_handle handle;
public:
CoroutineReturnType( std::coroutine_handle handle) : handle(handle) {}
struct promise_type {
CoroutineReturnType get_return_object() {
auto result = CoroutineReturnType( from_promise(*this));
// Magic happens here...
return result;
}
void initial_suspend() {
// ...or here
// such that currentlyExecutingMethod below
// holds a pointer to the currently
// executing coroutine return type.
}
}
};
class MyClass {
public:
CoroutineReturnType * currentlyExecutingMethod;
CoroutineReturnType myMethod() {
// or maybe, less satisfactory, the magic could happen here.
// Do stuff
co_await std::suspend_always{};
// Do more stuff
co_return;
};
// ... more similar methods.
// Something external calls this to kick the currently executing method along...
void externalCallback()
{
currentlyExecutingMethod->handle->resume();
}
};
< /code>
Есть предложения? Решение ниже, самое простое решение - ...
https://godbolt.org/z/dcegqhrqc
Хотя шаблон, который он использует для конструктора Orders_type, имеет преимущество работы, если я добавляю методы с разными знаками.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ct-methods
Взаимодействие между C ++ Coroutines и методами обычных объектов [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
1754006503
Anonymous
Если вы приехали сюда из -за названия, этот вопрос возник, потому что я пропустил части в стандарте, который написал ... < /p>
Когда вызывается коратика, копия создается для каждого параметра Coroutine в начале тела замены. Для параметра
, исходное объявление которого указано тип CV T,
14.1 Если t является эталонным типом, копия является ссылкой типа CV T, связанного с тем же объектом, что и параметр;
14.2 В противном случае копия является переменной типа CV T с автоматическим продолжительностью хранения, который прямо инициализируется из xvalue типа t
witring ramer-ravereter. /> < /ol>
< /blockquote>
В дальнейшем Pi-это lvalue типа Pi, где p1 обозначает параметр объекта
, а Pi+1 обозначает функцию ITH-необъективной функции
для параметра Implice-члена, а Pi denots
ITH-функция в противном случае. Для неявного элемента объекта
функция Q1 - это lvalue, которая обозначает *это; Любой другой Qi-это
lvalue, которая обозначает копию параметров, соответствующую Pi, < /p>
< /blockquote>
stronge-arguments-arguments, определяется следующим образом: перегрузка
Решение Q1 выполняется в конструкции обещания, созданный
aterding at. Если найден жизнеспособный конструктор
( Quover.match.iable]), то, то есть обещание-аргументы (Q1,…,
qn), в противном случае обещание-конструкторы-аргументы пусты, < /p>
< /blockquote>
Я делаю это редактирование с момента моего исходного. Библиотеки так вряд ли будут полезны для кого -либо еще. класс, в котором каждый метод - это коратика, но находится на уровне бизнес -логики, поэтому только одна коратика может быть «в полете», так сказать, одновременно.class MyClass;
class CoroutineReturnType {
std::coroutine_handle handle;
public:
CoroutineReturnType( std::coroutine_handle handle) : handle(handle) {}
struct promise_type {
CoroutineReturnType get_return_object() {
auto result = CoroutineReturnType( from_promise(*this));
// Magic happens here...
return result;
}
void initial_suspend() {
// ...or here
// such that currentlyExecutingMethod below
// holds a pointer to the currently
// executing coroutine return type.
}
}
};
class MyClass {
public:
CoroutineReturnType * currentlyExecutingMethod;
CoroutineReturnType myMethod() {
// or maybe, less satisfactory, the magic could happen here.
// Do stuff
co_await std::suspend_always{};
// Do more stuff
co_return;
};
// ... more similar methods.
// Something external calls this to kick the currently executing method along...
void externalCallback()
{
currentlyExecutingMethod->handle->resume();
}
};
< /code>
Есть предложения? Решение ниже, самое простое решение - ...
https://godbolt.org/z/dcegqhrqc
Хотя шаблон, который он использует для конструктора Orders_type, имеет преимущество работы, если я добавляю методы с разными знаками.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79720867/interaction-between-c-coroutines-and-ordinary-object-methods[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия