このオブジェクトを呼び出すための特定の関数または関数オブジェクトと引数をとり、完璧な転送を使用して呼び出す関数(apply_args()
と呼ぶ)を書き込もうとしました。関数にargsを適用するためのテンプレート関数
例:
auto fun = [](std::string a, std::string const& b) { return a += b; };
std::string s("world!");
// s is passing by lvalue ref,
// temporary object by rvalue ref
s = apply_args(fun, std::string("Hello, "), s);
どのように私はその機能を実装することができますか?あなたは(関数ポインタでそれを変換する)+fun
としてfun
ラムダを渡すために受け入れた場合
それを書くことから学びたいと思っているので、これを書こうとしているのですか?それを望むので書きたいのですか? 2番目の場合は、代わりに['std :: invoke'](http://en.cppreference.com/w/cpp/utility/functional/invoke)を使うべきでしょう。 –
@DanielH - 'std :: invoke'は良い選択ですが、C++ 17です。この質問にはタグが付けられていますC++ 11 – max66
@DanielH最初のもの – user1786089