Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
dd34720
Start work on an io_sender<Return(Args...)>
ispeters Apr 17, 2026
21c9df3
Rename io_sender to function
ispeters Apr 17, 2026
60783ec
Generalize implementation
ispeters Apr 18, 2026
a39e38b
Support no-throw functions
ispeters Apr 18, 2026
2b9206f
Get rid of virtual inheritance
ispeters Apr 19, 2026
a97cb98
Support arbitrary completion signatures
ispeters Apr 19, 2026
44773ca
Round out the partial specializations of exec::function
ispeters Apr 19, 2026
a964cbf
Delete a layer of forwarding
ispeters Apr 19, 2026
2646634
Inch towards allocator support
ispeters Apr 19, 2026
fe7477d
Add frame allocator support
ispeters Apr 19, 2026
3bb3b95
constexpr (almost) all the things
ispeters Apr 20, 2026
24eb90c
More tests
ispeters Apr 20, 2026
fe6d7b2
Get allocator selection working
ispeters Apr 20, 2026
7a6defa
Environment forwarding works(ish)
ispeters Apr 21, 2026
63297a9
Tidy up and add comments
ispeters Apr 21, 2026
6088d6a
Remove [[no_unique_address]]
ispeters Apr 28, 2026
86c8478
Clean up the _func_impl constructor
ispeters Apr 28, 2026
2605979
Replace most of exec::function with _any_receiver_ref
ispeters Apr 29, 2026
6dc0497
Clean up the comments
ispeters Apr 29, 2026
fb4b364
Stop deducing noexcept
ispeters Apr 29, 2026
f090e89
Simplify with __any<_iopstate>
ispeters Apr 29, 2026
5a082ba
Use _any_opstate_base and _state in _func_op
ispeters Apr 29, 2026
b884879
Simplify _sigs_from_t
ispeters Apr 29, 2026
39ff638
CR feedback and lvalue connectability
ispeters Apr 29, 2026
18e8e94
Tidy up test cases
ispeters Apr 30, 2026
6748e67
Do not deduce factories as references
ispeters Apr 30, 2026
6de1f19
Fix build
ispeters Apr 30, 2026
59ff862
Add signature validation to exec::queries
ispeters Apr 30, 2026
e4eaebb
Clean up includes
ispeters Apr 30, 2026
7c0e4c2
Accept non-empty callables
ispeters Apr 30, 2026
ab743b9
Fix up _func_impl::get_completion_signatures
ispeters Apr 30, 2026
fd94afc
Ensure completion_signature order is irrelevant
ispeters Apr 30, 2026
e204790
Tweak comments
ispeters Apr 30, 2026
38ab40e
Fix GCC builds
ispeters May 1, 2026
2554f62
Hopefully fix MSVC
ispeters May 1, 2026
83dfbdc
Make query specification order-independent
ispeters May 1, 2026
67066b8
Maybe fix MSVC + CUDA builds
ispeters May 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion include/exec/any_sender_of.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#pragma once

#include "../stdexec/__detail/__any.hpp"
#include "../stdexec/__detail/__concepts.hpp"
#include "../stdexec/__detail/__receiver_ref.hpp"
#include "../stdexec/__detail/__receivers.hpp"

Expand All @@ -28,8 +29,35 @@ STDEXEC_PRAGMA_IGNORE_GNU("-Woverloaded-virtual")

namespace experimental::execution
{
namespace _qry_detail
{
template <class Sig, bool Nothrow>
struct _env_archetype;

template <class Return, class Query, class... Args, bool Nothrow>
struct _env_archetype<Return(Query, Args...), Nothrow>
{
Return query(Query, Args &&...) const noexcept(Nothrow);
};

using namespace STDEXEC;

template <class Sig>
inline constexpr bool is_query_function_v = false;

template <class Return, class Query, class... Args>
inline constexpr bool is_query_function_v<Return(Query, Args...)> =
__callable<Query, _env_archetype<Return(Query, Args...), false> const &, Args...>;

template <class Return, class Query, class... Args>
inline constexpr bool is_query_function_v<Return(Query, Args...) noexcept> =
__nothrow_callable<Query, _env_archetype<Return(Query, Args...), true> const &, Args...>;
} // namespace _qry_detail

template <class... Sigs>
struct queries;
requires(_qry_detail::is_query_function_v<Sigs> && ...)
struct queries
{};

template <class Sigs, class Queries = queries<>>
struct any_receiver;
Expand Down
Loading
Loading