[ create a new paste ] login | about

Link: http://codepad.org/MuZyhWWw    [ raw code | fork ]

C++, pasted on Oct 25:
#include<memory>
#include<iostream>

#define MAKETYPE(T) struct T { T() { std::cerr << #T ".ctor" << std::endl; } ~T() { std::cerr << #T ".dtor" << std::endl; } }

MAKETYPE(TypeA);
MAKETYPE(TypeB);
MAKETYPE(TypeC);
MAKETYPE(TypeD);

int main()
{
    std::shared_ptr<TypeA> a(new TypeA);
    {
        bool error;
        std::cerr << "Does doA fail? ";
        std::cin >> error;
        if (error)
            goto out_a;
        else
        {
            std::shared_ptr<TypeB> b(new TypeB);
            TypeD d;
            std::cerr << "Does doB fail? ";
            std::cin >> error;
            if (error)
                goto out_b;
            else
            {
                std::shared_ptr<TypeC> c(new TypeC);
                std::cerr << "Does doABC fail? ";
                std::cin >> error;
                if (error)
                    goto out_c;
                else
                    goto out;
            }
        }
    }
out_c:
    std::cerr << "Undid doABC" << std::endl;
out_b:
    std::cerr << "Undid doB" << std::endl;
out_a:
    std::cerr << "Undid doA" << std::endl;
out:
    return 0;
}


Create a new paste based on this one


Comments: