检查这是否是函数的最后一次调用

时间:2014-06-16 07:55:25

标签: c++11

基本上我想要的是std::call_once的反面,我需要有一些代码,例如在函数foo内,只在foo的最后一次调用时运行,最好没有某种懒惰呼叫机制。

void foo()
{
    ...
    if( magic )
       do stuff
}

foo();
foo();
foo(); // magic will only be true here

这样的事情可能吗?

2 个答案:

答案 0 :(得分:2)

这种魔法将是神奇的,在这个世界上是不可能的。

但是,我想,你的问题是如何进行必要的清理,这是可能的。我能想到至少有三种不同的机制:

  1. 使用atexit()注册清理处理程序。

  2. 使用__attribute__((destructor))定义一个函数。

  3. 将清理放在类的析构函数中,并创建该类的静态对象。

答案 1 :(得分:1)

不,这是不可能的。确定没有人再次调用foo的唯一方法是a)解决暂停问题b)在程序终止时调用foo。