Порядок оценки аргументов с использованием std :: cout

Привет всем, сегодня я наткнулся на этот фрагмент кода и не понимаю, что именно происходит и, в частности, в каком порядке:

Код :

#include <iostream>

bool foo(double & m)
{
    m = 1.0;
    return true;
}

int main()
{
    double test = 0.0;
    std::cout << "Value of test is : \t" << test << "\tReturn value of function is : " << foo(test) <<  "\tValue of test : " << test << std::endl;
    return 0;
}

Результат:

Value of test is :      1       Return value of function is : 1 Value of test : 0

Видя это, я бы предположил, что перед вызовом функции печатается самый правый аргумент. Так это оценка справа налево ?? Однако во время отладки кажется, что функция вызывается до вывода, чего я и ожидал. Я использую Win7 и MSVS 2010. Любая помощь приветствуется!

12
задан Jerry Coffin 4 March 2013 в 16:05
поделиться