Kolejność tworzenia obiektów na wzmocnionej liście początkowej

#include <iostream>

struct A
{
    A() { std::cout << "(A::A)"; }
};

struct B
{
    B() { std::cout << "(B::B)"; }
};

struct C
{
    template<typename ...Args>
    C(Args && ...) {}
};

int main(int agrc, char *argv[])
{
    C {A(), B()}; // <-- prints (B::B)(A::A)
    std::cout << std::endl;
    C {(A(), B())}; // <-- prints (A::A)(B::B)
    std::cout << std::endl;

    return 0;
}

Mam 2 pytania:

Dlaczego w pierwszej wzmocnionej liście początkowej obiekty są tworzone w kolejności od prawej do lewej?Dlaczego nawiasy w drugim przypadku przywracają tę kolejność?

Edycja: skompilowałem go z msvs 2013

questionAnswers(3)

yourAnswerToTheQuestion