Как выполнить некоторый код при выходе из функции?
Можно воспользоватся деструктором. Не забывайте, что нельзя бросать исключения в деструкторе.#include <iostream>
#include <functional>

template <typename T>
class defer {
private:
    std::function<T()> mFunctor;
public:
    defer(std::function<T()> functor) : mFunctor(functor) {}
    ~defer() { mFunctor(); }
};

int main() {
    defer<void> d([] { std::cout << "Deferred func!" << std::endl; });
    //...
    
    std::cout << "Hello, world!" << std::endl;
    
    if (true) {
        return 0;
    }
    //...
    if (false){
        return 1;
    }
    
    return 0;
}
...
auto f = []{ cout << "asdf"; };
...
class invoker
{
public:
    ~invoker()
    {
        fn();
    }
    decltype(f) fn = f;
};

    invoker c;
...
Писал с телефона, сорри если есть опечатки.