尝试做类似...
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;
};
Run Code Online (Sandbox Code Playgroud)
我知道我需要在这里使用SFINAE,但是如何区分回调参数和值参数呢?可以安全地假定一个值不能用作回调。
我试着enable_if用is_function, result_of,invoke_result,is_invocable,和其他人,但没有它的作品的权利。可能吗