`STDEXEC_ENABLE_EXTRA_TYPE_CHECKING` no longer checks senders in `connect` (since #1809)
Maintainer antworten meist innerhalb von 2 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- cmake, cpp
- Bereich
- build-system, devtools
Rechercherichtung
The check lives in connect_t::operator() and the debug receiver __debug::__receiver. The any_sender failure is in test/exec/test_any_sender.cpp, at the __nothrow_move_constructible assert in __fwd in __env.hpp. The CMake SYSTEM include setting is the other part. First the maintainers must decide whether the flag should keep working. If it should, done means the mismatched-completion case warns through connect, the any_sender test compiles with the flag on, and a build-failure test exists.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
With STDEXEC_ENABLE_EXTRA_TYPE_CHECKING, connect used to instantiate completion_signatures_of_t for the sender it connects, so __debug_sender warned when a sender completes with something it did not declare. That came from #1070 (for #1065). The new connect from #1809 no longer does this, so now only code that names completion_signatures_of_t gets the check.
Example: a sender that declares set_value_t(int) but completes with set_value(std::move(rcvr), v), where v is an int lvalue. Compiled with -I<stdexec>/include -DSTDEXEC_ENABLE_EXTRA_TYPE_CHECKING, with GCC 12 and Clang 21:
sync_wait(sndr) |
let_value(sndr, f) |
completion_signatures_of_t<Sndr> |
|
|---|---|---|---|
| before #1809 (6d568715~1) | warning | warning | warning |
| #1809 and main (e780d360) | no warning | no warning | warning |
I tried to put the check back into connect_t::operator(), and found two more things:
- With the flag on, that breaks
test/exec/test_any_sender.cppwith GCC 12 and Clang 21.when_anyinside anany_senderthen gets connected to__debug::__receiver, andstatic_assert(__nothrow_move_constructible<_Env>)in__fwd(__env.hpp) fails for the type-erased receiver environment. Main compiles that file with the flag on. - Since ca3797c3, the CMake target adds the include directory as
SYSTEM. GCC and Clang don't report warnings from system headers, so with-isysteminstead of-Inone of the cases above warn, also before #1809. So CMake users don't see these warnings at all.
Is the flag still meant to work? If yes, I'd be happy to make a PR that restores the check in connect, makes it work with any_sender, and adds a build-failure test. For the SYSTEM part, one option is to not mark the include directory SYSTEM when STDEXEC_ENABLE_EXTRA_TYPE_CHECKING is ON. If you'd rather drop the flag, that's fine too.
Claude (Anthropic) was used as assistant.
- Vorherrschende Sprache
- C++
- Sterne
- 2.5k
- Forks
- 285
- Ø Merge
- 2 T. 5 Std.
- Gemergte PRs (30 T.)
- 85
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NVIDIA/stdexec
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
NVIDIA/stdexec#1751 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 4/5 Über eine Woche Anfängerfreundlichkeit 18/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 18/100
NVIDIA/stdexec#2402 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 3/5 1-3 Stunden Anfängerfreundlichkeit 25/100
NVIDIA/stdexec#2400 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 12/100
NVIDIA/stdexec#2344 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 2 Tagen
Ähnliche Issues
-
bug libcudf
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
level/task module/cloud monitoring type/maintenance
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
LadybirdBrowser/ladybird#13809 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug module:nodes tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
rocketride-org/rocketride-server#3020 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 9 Tagen