えっと、次ここでいいのか?
======
初期化リストを返す関数って許されていますか?
下に貼るコードの動作がおかしくて困っています。
また、forward_listにすれば解決はしますが、
何度も呼ばれる場合、パフォーマンスは初期化リストの方がいいですよね?

#include <iostream>
#include <utility>
#include <initializer_list>

std::initializer_list<int> test(const std::pair<int,int>& e) {
//return {1,2,3}; //ok!
return {e.first,e.second,e.first}; //undefined?
}

int main()
{
for (auto i: test(std::make_pair(1,2))) {
std::cout << i << std::endl;
}
}