何らかのリストを返す関数の設計で迷ってます。
手順はいくつかあり、

1.GetDeviceCount()->GetDeviceName(n)
 パフォーマンスの問題と、煩雑さが気に入らない

2.クライアント側で用意したコンテナへ返す
 コンテナのクリアはどちらでするべきか決められない。
 テンプレートはいや。かといって、コンテナを限定するのも何だかな。

3.クライアントでコンテナを用意して、返却値にする
void GetDeviceList() {
vector<string> devices;
....;
return devices;
}

vector<string> devices = GetDeviceList();

3番が一番単純で好みなのだけど、RVOの実装の問題やら
巨大なオブジェクトを返却値にすることへの抵抗やらで決めあぐねております。
何かスマートな対策は無いですか?