イニシャライザリストで指定された関数呼び出しの実行順序について疑問に思っています:
#include <iostream>
class ExpandWithConstructor
{
public:
template < typename ... T>
ExpandWithConstructor( T... args) {}
};
template < typename T>
T Print( T t )
{
std::cout << t << std::endl;
return t;
}
int main()
{
ExpandWithConstructor{ Print(1.1),Print("Hallo"),Print('c')};
}
コードを実行すると、次のようになります。
c
Hallo
1.1
Q: 標準で定義されている関数の逆順はありますか、それとも順序の保証はありませんか?
g++ 4.8.1 を使用しています。