如何创建一个捕获指向 C++11 中方法的指针的 lambda?如果我尝试使用 GCC (4.6) 编译器执行此操作,它无法推断出表达式类型。
我尝试过这个:
typedef std::string ( Class::*pointerName ) () const;
pointerName = &Class::method;
auto comparer = [&pointerName] ( Class * pFirst, Class * pSecond )
{
return ( pFirst->*pointerName ) () < ( pSecond->*pointerName ) ();
}
最佳答案
您将 typedef 的 pointerName
用作变量而不是类型(或者只是忘记命名变量):
typedef std::string ( Class::*pointerName ) () const; // declares a type alias
pointerName ptr = &Class::method;
// ^^^ a name for your variable of type pointerName
auto comparer = [&ptr] ( Class * pFirst, Class * pSecond )
{
return ( pFirst->*ptr ) () < ( pSecond->*ptr ) ();
}
(或者直接将 typedef
放入原始代码中)
关于c++ - lambda 可以捕获指向方法的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713088/