私が正しく思い出せば、関数を指定するクラスのブースト実装があり、オブジェクトが破棄されたときにそれが呼び出されます。
// it's actually a template if iirc
class Blue
{
public:
Blue(std::function<void()> f) : func(f) { }
~Blue() { func(); }
private:
std::function<void()> func;
};
// Implementation:
class Foo
{
public:
Blue Bar()
{
/* ... */
return Blue(std::bind(&Mag, this));
}
private:
void Mag() { /* ... */ }
};
int main()
{
Foo foo;
// ...
{
foo.Bar();
// ...
// Guaranteed Mag() will be called
}
// ...
}
ブーストの実装が何と呼ばれているか忘れて、誰かがそれを特定するのを手伝ってくれるかどうか疑問に思っていましたか?