| 97 | |
| 98 | template <class _Fun> |
| 99 | struct env_from |
| 100 | { |
| 101 | static_assert(STDEXEC::__nothrow_move_constructible<_Fun>); |
| 102 | |
| 103 | template <class _Query, class... _Args> |
| 104 | requires STDEXEC::__callable<_Fun const &, _Query, _Args...> |
| 105 | STDEXEC_ATTRIBUTE(nodiscard, always_inline, host, device) |
| 106 | auto query(_Query, _Args&&... __args) const |
| 107 | noexcept(STDEXEC::__nothrow_callable<_Fun const &, _Query, _Args...>) |
| 108 | -> STDEXEC::__call_result_t<_Fun const &, _Query, _Args...> |
| 109 | { |
| 110 | return __fun_(_Query(), static_cast<_Args&&>(__args)...); |
| 111 | } |
| 112 | |
| 113 | STDEXEC_ATTRIBUTE(no_unique_address) _Fun __fun_; |
| 114 | }; |
| 115 | |
| 116 | template <class _Fun> |
| 117 | STDEXEC_HOST_DEVICE_DEDUCTION_GUIDE env_from(_Fun) -> env_from<_Fun>; |
no outgoing calls
no test coverage detected