C ++ 11ラムダを使用してアプリケーションの開発を始めており、いくつかの型を関数ポインターに変換する必要があります。これはGCC4.6.0で完全に機能します。
void (* test)() = []()
{
puts("Test!");
};
test();
私の問題は、ラムダ内で関数またはメソッドのローカル変数を使用する必要がある場合です。
const char * text = "test!";
void (* test)() = [&]()
{
puts(text);
};
test();
G ++ 4.6.0は、キャストエラーコードを提供します。
main.cpp: In function 'void init(int)':
main.cpp:10:2: error: cannot convert 'main(int argc, char ** argv)::<lambda()>' to 'void (*)()' in initialization
自動を使用する場合、それは問題なく動作します:
const char * text = "Test!";
auto test = [&]()
{
puts(text);
};
test();
私の質問は、 [&]を使用してラムダの型を作成するにはどうすればよいですか?私の場合、STL std :: functionを使用できません(プログラムがC ++ RTTIおよびEXCEPTIONSランタイムを使用していないため)。この問題を解決するための関数の簡単な実装がありますか?