C++0x の新しいイニシャライザ リスト機能を使用して、現在作業中の新しい API のコンパイル時に定義された項目数で std::vector を初期化したいと考えています。このようなもの:
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 と再帰を使用して重複した文字列のリストを作成し、最終的に何らかの方法で定数 (列挙型など) を介してアクセスする必要があることは承知しています。しかし、このように初期化子リストをネストすることさえできないようです。