Der Versuch, so etwas wie ...
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;
};
Ich weiß, dass ich hier SFINAE verwenden muss, aber wie unterscheide ich einen Rückrufparameter von einem Wertparameter? Es ist sicher anzunehmen, dass ein Wert nicht als Rückruf verwendet werden kann.
Ich habe versucht , enable_if
mit is_function, result_of
, invoke_result
, is_invocable
, und andere, aber nichts davon richtig funktioniert. Ist es überhaupt möglich?
constexpr
wegen besserer Kompilierungszeiten SFINAE vorziehen