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_ifmit is_function, result_of, invoke_result, is_invocable, und andere, aber nichts davon richtig funktioniert. Ist es überhaupt möglich?
constexprwegen besserer Kompilierungszeiten SFINAE vorziehen