次のようなことをしようとしています...
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よりも優先