#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;
}
У меня есть 2 вопроса:
- Почему в первом созданном объекте списка инициализации создаются в порядке справа налево?
- Почему скобки во втором случае возвращают этот порядок?
Изменить: я скомпилировал его с msvs 2013