【发布时间】:2019-11-19 05:38:11
【问题描述】:
尝试做类似...的事情
template <class T>
struct Wrapper
{
template <class U>
void set(const U& u) { myT = u; }
template <class F>
void set(F f) { myT = f(); }
T myT;
};
我知道我需要在这里使用 SFINAE,但是如何区分回调参数和值参数?可以安全地假设一个值不能用作回调。
我尝试过 enable_if 和 is_function, result_of、invoke_result、is_invocable 等,但没有一个能正常工作。甚至可能吗?
【问题讨论】: