Consider the following program:
#include #include using namespace std; struct T { int a; double b; string c; };
For anyone from the future, this behavior will be changed in C++20.
In other words, even though implementation internally will still call T(arg0, arg1, ...) it will be considered as regular T{arg0, arg1, ...} that you would expect.
T(arg0, arg1, ...)
T{arg0, arg1, ...}