尝试做某件事情,比如说...
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
等,但都不起作用。这是否可能?
constexpr
而不是SFINAE。 - Dev Null