Für eine Vorlage Standardfall, brauche ich eine Funktion, die nichts weiter tut, als alles, was es als Argument erhält. Insbesondere sollten Referenzen, Konstanten usw. beibehalten werden. Das Schreiben von transparent(/* something */)
sollte vollständig dem Schreiben /* something */
entsprechen.Funktion Weiterleitung Argument und einfach nichts zu tun
Ist die folgende Funktionsdefinition korrekt, um diesen Zweck zu erreichen?
template <class S>
decltype(auto) transparent (S && s) { return std::forward<S> (s); }
Ich denke, dass die Implementierung korrekt ist. Aber was ist der Zweck? Sie haben grundsätzlich 'std :: forward' umbenannt. –
'Vorlage struct Transform {/ * operator() sollte nichts tun * /}; Vorlage <> struct Transform {MyOtherType-Operator() (MyType t) {return wrap (t); }; '. Ich möchte es in einer Vorlage Funktion wie 'Return Transform {} (/ * was auch immer meine Funktion berechnet * /);' –
JohnB