Как и многие, я очень взволнован C ++ 0x . Я стараюсь изучать и использовать новые функции в новых проектах, чтобы я мог написать лучший и самый простой в обслуживании код.
Излишне говорить, что мне нравится идея, лежащая в основе новых инициализаторов. Итак, я смотрю на них, и это имеет для меня смысл:
T x = { 1, 2, 3 }; // like a struct or native array
T x({1, 2, 3}); // copy construct something like an "object literal" in other languages... cool!
return {1, 2, 3}; // similar to above, but returning it, even cooler!
Что для меня не имеет смысла, так это:
T x{1, 2, 3};
Это просто кажется ... странным. Я не уверен, какой синтаксис люди хотят использовать, это имитирует, это просто не кажется «правильным».
Каков дизайн / мысль, стоящая за этим синтаксисом?
Единственный пример, где это кажется таким имеет значение примерно следующее:
std::vector the_vec{4};
который будет вызывать конструктор списка инициализаторов, но почему бы тогда просто не написать это:
std::vector the_vec = {4};
И сделать то, что всем уже удобно?