我想根据参数来获取任意类型的operator()
的类型。
template<typename F, typename... Args>
constexpr auto call_ptr =
static_cast<std::invoke_result_t<F, Args...> (F::*)(Args...)>(&F::operator());
但是,call_ptr
不适用于过载解析。例如,这些都失败
struct S {
void operator()(double) {}
void operator()(int) {}
};
call_ptr<S, char>;
call_ptr<decltype([](auto&&){}), int>;
我怎么写call_ptr
?
答案 0 :(得分:4)
无法执行此操作,但是建议将此功能添加到语言中:http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3866.html