Здравствуйте. По стандарту пользователю нельзя создавать объекты типа std::initializer_list иначе кроме как по умолчанию. Зачем это сделано? Мне бы, например, было бы удобно вернуть std::initializer_list из математического вектора или любого другого контейнера, хранящего элементы по порядку:
math::vector4<float> mv = {0, 0, 0, 0};
std::vector<float> cv = mv.slice();
Например, так. VS2013 разрешает обойти стандарт, там конструктор по диапазону открыт. Но так не везде