Списки вложенных инициализаторов C ++ 0x

Я хотел бы использовать новую функцию списка инициализаторов C ++ 0x для инициализации std :: vector с определенным во время компиляции количеством элементов для нового API, над которым я сейчас работаю . Примерно так:

template<int n>
std::initializer_list<std::string> duplicate(std::string s) {
  // return s duplicated n times
  return { s, s, s };
}

std::vector<std::string> v = { "foo",  duplicate<3>("bar") };

Ты хоть представляешь, как этого добиться? Это вообще возможно? Я знаю, что мне нужно будет использовать TMP и рекурсию для создания списка повторяющихся строк и, наконец, получить к нему доступ через константу (например, enum). Но, похоже, я даже не могу вложить список инициализаторов таким образом.

6
задан Thomas Edleson 30 April 2011 в 09:54
поделиться