Кажется неправильным вызывать конструктор без скобок, и это работает:
struct S
{
int a;
float b;
};
struct T
{
T(S s) {}
};
int main()
{
T t(S({1, 0.1})); // NO ERROR HERE, due to nice constructor parentheses
T a({1,0.1}); // note that this works, as per link of Martin.
}
Может показаться логичным (по крайней мере, мне :s
), что ваш пример не работает.Замена S на vector<int>
дает тот же результат.
vector<int> v{0,1,3}; // works
T t(vector<int>{0,1,2}); // does not, but
T t(vector<int>({0,1,2})); // does