Вы не можете вкладывать списки инициализаторов для их расширения, а также не можете добавлять / объединять их.Они - лишь немного синтаксического сахара для доступа к массиву размера компиляции.Даже копирование initializer_lists не копирует их элементы.Самое главное, это означает, что вы не можете использовать возвращаемое значение дубликата!Указанный массив уничтожается при возврате функции в 8.5.4p6 в N3290:
Время жизни массива такое же, как и у объекта initializer_list.
(В операторе return создается временный объект, а затем возвращается по значению. Даже если исключено копирование, все остальные семантики копирования не изменяются.)
Сравните, например, с созданным здесь временным initializer_list, которыйзатем переданный в ctor и уничтоженный после инициализации объекта, в тот же момент все другие временные объекты в том же полном выражении (если они были) будут уничтожены:
vector<string> v {"foo"};
Вместо манипулирования списками инициализатора, используйте метод vector для вставки N копий:
v.insert(v.end(), 3, "bar");