У меня есть вопрос о различных значениях списка, заключенного в фигурные скобки.
Я знаю, что С++ 03 не поддерживает initializer_list
С++ 11. Тем не менее, даже без флага компилятора -std=c++11
gcc 6.3 правильно инициализирует interpolate
следующим кодом:
map<string, string> interpolate = { { "F", "a && b && c" }, { "H", "p ^ 2 + w" }, { "K", "H > 10 || e < 5" }, { "J", "F && !K" } };
Меня спросили, почему это сработает, и я понял, что у меня нет ответа. Это Brace-Init-List, но способ, которым мы переходим от него к инициализации стандартного контейнера, обычно осуществляется через initializer_list
. Итак, как код, отличный от C++11, будет выполнять инициализацию?