34 int volatile&& operator()(
int,
char const*) {
37 float operator()(
float,
float) {
49 int volatile&&
test(
int,
char const*) {
52 float test(
float,
float) {
67 char go(Obj
const&,
char const*) {
75 float go(z::Obj
const&,
int) {
101 using FnA = char (Fn::*)(int, int);
102 using FnB =
int volatile && (Fn::*)(
int,
char const*);
140 using traits = go_invoke_traits;
153 using traits = go_invoke_traits;
155 EXPECT_TRUE((std::is_same<
int, traits::invoke_result_t<x::Obj, int>>::
value));
157 std::is_same<
char, traits::invoke_result_t<y::Obj, char const*>>::
value));
161 using traits = go_invoke_traits;
170 using traits = go_invoke_traits;
179 using traits = go_invoke_traits;
188 using traits = go_invoke_traits;
198 using traits = swap_invoke_traits;
220 using traits = test_invoke_traits;
232 using traits = test_invoke_traits;
235 (std::is_same<
char, traits::invoke_result_t<Obj, int, char>>::
value));
237 (std::is_same<
int volatile&&, traits::invoke_result_t<Obj, int, char*>>::
242 using traits = test_invoke_traits;
250 using traits = test_invoke_traits;
258 using traits = test_invoke_traits;
266 using traits = test_invoke_traits;
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
typename invoke_result< F, Args... >::type invoke_result_t
#define FOLLY_CREATE_FREE_INVOKE_TRAITS(classname, funcname,...)
#define EXPECT_EQ(val1, val2)
static uint64_t test(std::string name, bool fc_, bool dedicated_, bool tc_, bool syncops_, uint64_t base)
constexpr detail::Map< Move > move
requires E e noexcept(noexcept(s.error(std::move(e))))
constexpr auto invoke(F &&f, Args &&...args) noexcept(noexcept(static_cast< F && >(f)(static_cast< Args && >(args)...))) -> decltype(static_cast< F && >(f)(static_cast< Args && >(args)...))
static const char *const value
TEST_F(InvokeTest, invoke)
#define EXPECT_TRUE(condition)
#define FOLLY_CREATE_MEMBER_INVOKE_TRAITS(classname, membername)
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
#define EXPECT_FALSE(condition)