Quick Q: Can you move out of an initializer_list? -- StackOverflow
Quick A: No, because the contents are const.
A classic from SO, recommended by a developer team that encountered this situation again in the past week:
initializer_list and move semantics
Am I allowed to move elements out of a
std::initializer_list<T>?#include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } }Since
std::intializer_list<T>requires special compiler attention and does not have value semantics like normal containers of the C++ standard library, I'd rather be safe than sorry and ask.

Well timed with the recent release of Boost 1.55, a new
Trust Eric Niebler to deliver the goods -- when it comes to insightful discussion, cool code, and shameless puns:
A nice short overview of when you might want your associative container to use a contiguous implementation instead of a tree under the covers: