Size: a a a

pro.graphon (and gamedev)

2020 December 20

d

disba1ancer in pro.graphon (and gamedev)
а ещё придётся делать расширение над футурами для поддержки then()
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
не шарю в корутинах и актуальных проблемах их использования
источник

JA

Jokhar Ali in pro.graphon (and gamedev)
Anatoly Tomilov
не шарю в корутинах и актуальных проблемах их использования
если кратко, чтобы не городить стейтмашину, пишешь корутины
источник

d

disba1ancer in pro.graphon (and gamedev)
Anatoly Tomilov
не шарю в корутинах и актуальных проблемах их использования
при некоторых сочетаниях инклудов под mingw-w64 выдаёт ошибку про multiple definitions
источник

d

disba1ancer in pro.graphon (and gamedev)
Jokhar Ali
если кратко, чтобы не городить стейтмашину, пишешь корутины
мы про хак из сообщения, а не про машину
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Jokhar Ali
если кратко, чтобы не городить стейтмашину, пишешь корутины
да я в курсе. Я не знаю конкретного значения всех этих co_*
источник

d

disba1ancer in pro.graphon (and gamedev)
Anatoly Tomilov
да я в курсе. Я не знаю конкретного значения всех этих co_*
тут вроде довольно много инфы https://lewissbaker.github.io/
источник

U

UsernameAK in pro.graphon (and gamedev)
disba1ancer
напрягает только то что пришлось врубить -Wl,--allow-multiple-definition
__attribute__((weak))
источник

d

disba1ancer in pro.graphon (and gamedev)
UsernameAK
__attribute__((weak))
ща ржать будешь:
$ g++ -std=c++20 -fcoroutines -o CoroTest.exe CoroTest.cpp coroutine.cpp
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccVys6BV.o:coroutine.cpp:(.text+0x0): multiple definition of `.weak._ZNSt7__n486122__dummy_resume_destroyEv._ZSt21is_constant_evaluatedv'; C:\msys64\tmp\cc1UwxKb.o:CoroTest.cpp:(.text+0x0): first defined here
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccVys6BV.o:coroutine.cpp:(.data+0x0): multiple definition of `.weak._ZNSt7__n486114__noop_coro_frE._ZSt21is_constant_evaluatedv'; C:\msys64\tmp\cc1UwxKb.o:CoroTest.cpp:(.data+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
источник

d

disba1ancer in pro.graphon (and gamedev)
UsernameAK
__attribute__((weak))
там и так проставлено, и всё равно творится какая-то хрень
источник

d

disba1ancer in pro.graphon (and gamedev)
есть что-нибудь на вроде godbolt только с поддержкой линковки из нескольких исходников?
источник

U

UsernameAK in pro.graphon (and gamedev)
disba1ancer
ща ржать будешь:
$ g++ -std=c++20 -fcoroutines -o CoroTest.exe CoroTest.cpp coroutine.cpp
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccVys6BV.o:coroutine.cpp:(.text+0x0): multiple definition of `.weak._ZNSt7__n486122__dummy_resume_destroyEv._ZSt21is_constant_evaluatedv'; C:\msys64\tmp\cc1UwxKb.o:CoroTest.cpp:(.text+0x0): first defined here
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccVys6BV.o:coroutine.cpp:(.data+0x0): multiple definition of `.weak._ZNSt7__n486114__noop_coro_frE._ZSt21is_constant_evaluatedv'; C:\msys64\tmp\cc1UwxKb.o:CoroTest.cpp:(.data+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
gcc соGNUлся
источник

d

disba1ancer in pro.graphon (and gamedev)
UsernameAK
gcc соGNUлся
причём нужно, чтобы хедеры и инстанции из них определённым образом сошлись
источник

d

disba1ancer in pro.graphon (and gamedev)
в данном случае сочетание coroutine и type_traits причём нужно заюзать is_constant_evaluated и вещи связанные с корутинами
источник

d

disba1ancer in pro.graphon (and gamedev)
наверняка, может и что-то ещё встретится (в сочетании с винапи тоже может стрельнуть)
источник

d

disba1ancer in pro.graphon (and gamedev)
UsernameAK
gcc соGNUлся
он и так GNUтый, куда уж ещё 🤣
источник

PK

Pavel Kazakov in pro.graphon (and gamedev)
disba1ancer
как вам?
dse::util::task<int> job(dse::core::ThreadPool& pool) {
 std::cout << "a" << std::endl;
 co_await pool;
 std::cout << "b" << std::endl;
 co_await pool;
 pool.stop();
 co_return 0;
}
подожди, как такой код будет в плюсах вообще работать? это не валидные плюсы
источник

PK

Pavel Kazakov in pro.graphon (and gamedev)
ты же в локальном скоупе объявляешь одну и ту же сущность дважды, тут до линкера не дойдет дело даже
источник

d

disba1ancer in pro.graphon (and gamedev)
Pavel Kazakov
ты же в локальном скоупе объявляешь одну и ту же сущность дважды, тут до линкера не дойдет дело даже
где яннп
источник

PK

Pavel Kazakov in pro.graphon (and gamedev)
disba1ancer
где яннп
блин)) спросонья подумал, что co_await это тип) парсер в голове старенький
источник