Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
70480a0
Start work on an io_sender<Return(Args...)>
ispeters Apr 17, 2026
6b91628
Rename io_sender to function
ispeters Apr 17, 2026
8d77234
Generalize implementation
ispeters Apr 18, 2026
33c445b
Support no-throw functions
ispeters Apr 18, 2026
f8ae7a8
Get rid of virtual inheritance
ispeters Apr 19, 2026
3d3acea
Support arbitrary completion signatures
ispeters Apr 19, 2026
a475166
Round out the partial specializations of exec::function
ispeters Apr 19, 2026
dbc4172
Delete a layer of forwarding
ispeters Apr 19, 2026
b45d97a
Inch towards allocator support
ispeters Apr 19, 2026
60b1408
Add frame allocator support
ispeters Apr 19, 2026
83bbcb5
constexpr (almost) all the things
ispeters Apr 20, 2026
9d8da86
More tests
ispeters Apr 20, 2026
608cfa4
Get allocator selection working
ispeters Apr 20, 2026
7b77551
Environment forwarding works(ish)
ispeters Apr 21, 2026
4065190
Tidy up and add comments
ispeters Apr 21, 2026
e891273
Remove [[no_unique_address]]
ispeters Apr 28, 2026
60096fd
Clean up the _func_impl constructor
ispeters Apr 28, 2026
2a98495
Replace most of exec::function with _any_receiver_ref
ispeters Apr 29, 2026
3d9e653
Clean up the comments
ispeters Apr 29, 2026
67d3950
Stop deducing noexcept
ispeters Apr 29, 2026
0851467
Simplify with __any<_iopstate>
ispeters Apr 29, 2026
c54bcee
Use _any_opstate_base and _state in _func_op
ispeters Apr 29, 2026
24d0a3f
Simplify _sigs_from_t
ispeters Apr 29, 2026
1e9771a
CR feedback and lvalue connectability
ispeters Apr 29, 2026
97e3ed7
Tidy up test cases
ispeters Apr 30, 2026
e764b1d
Do not deduce factories as references
ispeters Apr 30, 2026
3f1166f
Fix build
ispeters Apr 30, 2026
09047d1
Add signature validation to exec::queries
ispeters Apr 30, 2026
cfdb2e2
Clean up includes
ispeters Apr 30, 2026
0a03532
Accept non-empty callables
ispeters Apr 30, 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
27 changes: 27 additions & 0 deletions 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,7 +29,33 @@ 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>
requires(_qry_detail::is_query_function_v<Sigs> && ...)
struct queries;

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