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