I have a question about the different meanings of a curly-brace enclosed list.
I know that C++03 did not support C++11's initializer_list
. Yet, even without the -std=c++11
compiler flag, gcc 6.3 will properly initialize interpolate
with this code:
map<string, string> interpolate = { { "F", "a && b && c" }, { "H", "p ^ 2 + w" }, { "K", "H > 10 || e < 5" }, { "J", "F && !K" } };
I was challenged on why this would work, and I realized I didn't have an answer. This is a Brace-Init-List, but the way we get from that to initializing a standard container is typically through an initializer_list
. So how would non-C++11 code be accomplishing the initialization?