阅读关于C ++的提议17关于删除标准的一些已弃用的,旧的和未使用的部分(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm)我发现D.9部分有点奇怪:
D.9“粘合剂”[depr.lib.binders]
这定义了bind1st()/ bind2nd(),它们被bind()严格取代。 (将来,我会争辩说bind()本身已经被lambda所取代 特别是通用的lambda,所以不应该弃用bind(),但是 不属于本提案的一部分。)
我没有得到关于bind()
本身被lambdas取代的评论。
如果我有课:
class A
{
public:
void f(int a){}
void f(int a, int b){}
}
我想将一个函数指针传递给A::f
到某个函数someFunction
,这样这个函数可以在A
实例化的对象上调用它,我声明{{1 }}:
someFunction
并称之为:
void someFunction(const std::function<void(int, int)>&);
如何使用lambda实现相同的功能? A a;
someFunction(std::bind(static_cast<void (A::*)(int, int)> (&A::f),
std::ref(a),
std::placeholders::_1,
std::placeholders::_2));
真的没有什么可以用lambda做的吗?
答案 0 :(得分:7)
你是怎么做到的?与imap_expunge($mbox);
和int main(void){
SysCtlClockSet(SYSCTL_OSC_MAIN);
//enable the hibernation module
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
//SYSCTL_OSC_EXT32 is the rate of the clock supplied to the Hibernation
HibernateEnableExpClk(SYSCTL_OSC_EXT32);
HibernateClockConfig(HIBERNATE_OSC_HIGHDRIVE);
HibernateRTCDisable();
//set the value to 0
HibernateRTCSet(0);
HibernateRTCEnable();
//get starting values
unsigned long long sec = HibernateRTCGet();
unsigned int subsec = HibernateRTCSSGet();
while(1){
sec= HibernateRTCGet();
subsec=HibernateRTCSSGet()
}
}
的绑定示例相比,非常直接且不那么深奥(我的意见)。
std::ref