は、我々はラムダ関数をラップするか、保存することができますどのように動作するのstd :: std::function
:機能は、あなたが知っている
#include <iostream>
#include <functional>
int main()
{
std::function<float (float, float)> add = [](float a, float b)
// ^^^^^^^^^^^^^^^^^^^^
{
return a + b;
};
std::cout << add(1, 2) << std::endl;
}
私の質問は、あなたがそれをテンプレートクラスで見ることができますが、それが受け入れることができるように、周りのstd::function
です任意の種類の機能の署名。
たとえば、この形式のfloat (float, float)
は、return_value (first_arg, second_arg)
です。
std::function
の構造は何ですか?また、x(y,z)
のような機能の署名をどのように受け入れ、どのように機能するのですか? float (float, float)
はC++の新しい有効な式ですか?
C++でタイプイレージャをルックアップします。 –
コンパイラの ''ヘッダをいつでも開くことができます(私はすべての主要コンパイラが標準ヘッダをC++コードとして提供していると思います)、それを調べたり、[Boost.Function](http://www.boost.org/doc /libs/1_53_0/doc/html/function.html)。 –
Angew
@Angew:はい、とても教育的です。私は 'std :: function'がC++言語のあらゆる面に触れていると思います... –