Правильно ли определен этот код?

Я подозреваю, что следующая цепочка функций приведет к неуказанной последовательности в соответствии со стандартами C ++ (предположим, C ++ 0x). Просто хочу подтверждения, и если бы кто-нибудь мог дать объяснение, я был бы признателен.

#include <iostream>

struct TFoo 
{
    TFoo(int) 
    {
        std::cout<<"TFoo"<<std::endl;
    };
    TFoo foobar1(int) 
    {
        std::cout<<"foobar1"<<std::endl;
        return *this;
    };
    TFoo foobar2(int) 
    {
        std::cout<<"foobar2"<<std::endl;
        return *this;
    };
    static int bar1() 
    {
        std::cout<<"bar1"<<std::endl;
        return 0;
    };
    static int bar2() 
    {
        std::cout<<"bar2"<<std::endl;
        return 0;
    };
    static int bar3()
    {
        std::cout<<"bar3"<<std::endl;
        return 0;
    }
};

int main(int argc, char *argv[])
{
    // is the sequence well defined for bar1, bar2 and bar3?
    TFoo(TFoo::bar1()).foobar1(TFoo::bar2()).foobar2(TFoo::bar3());
}

* edit: удален спецификатор __fastcall для функций (не требуется / не имеет отношения к вопросу).

8
задан Zach Saw 14 July 2011 в 01:18
поделиться