12namespace tag_invoke_fn_ns {
17#if defined(_MSC_VER) || (defined(__GNUC__) && __GNUC__ < 12 && !defined(__clang__))
24 template <
typename Tag,
typename...
Args>
30 std::forward<Args>(
args)...)))
32 std::forward<Args>(
args)...)) {
40inline namespace tag_invoke_ns {
44template <
typename Tag,
typename...
Args>
49template <
typename Tag,
typename...
Args>
54 std::forward<Args>(
args)...)
58template <
typename Tag,
typename...
Args>
61template <
typename Tag,
typename...
Args>
65template <
typename Tag,
typename...
Args>
69template <
typename Tag,
typename...
Args>
void alpaqa_tag_invoke()=delete
Poison pill to hide overloads of foo() that might be found in parent namespace.
constexpr tag_invoke_fn_ns::tag_invoke_fn alpaqa_tag_invoke
std::decay_t< decltype(Tag)> tag_t
std::invoke_result_t< decltype(::alpaqa::alpaqa_tag_invoke), Tag, Args... > tag_invoke_result_t
constexpr bool is_tag_invocable_v
constexpr bool is_nothrow_tag_invocable_v
std::invoke_result< decltype(::alpaqa::alpaqa_tag_invoke), Tag, Args... > tag_invoke_result
constexpr auto operator()(Tag tag, Args &&...args) const noexcept(noexcept(alpaqa_tag_invoke(std::move(tag), std::forward< Args >(args)...))) -> decltype(alpaqa_tag_invoke(std::move(tag), std::forward< Args >(args)...))