Я могу использовать список инициализаторов для инициализации std::map
следующим образом:
std::map<int, int> m {{5, 6}, {3, 4}, {1, 2}};
Я могу изменить порядок std::map
, предоставив лямбду сравнения (см. здесь , найдите «лямбда») следующим образом:
auto comp = [](int a, int b) { return b < a; };
std::map<int, int, decltype(comp)> m(comp);
Теперь я попытался одновременно выполнить оба действия следующим образом:
std::map<int, int, decltype(comp)> m(comp) {{5, 6}, {3, 4}, {1, 2}};
Однако это не компилируется.На VS 2013 я получаю следующую ошибку:
ошибка C2448: 'm': инициализатор в стиле функции выглядит как определение функции
Iтакже попытался запустить код на Ideone , но там я получаю следующую ошибку:
ошибка: ожидается '}' в конце ввода
ThisДля меня это выглядит как самый неприятный синтаксический анализ .Я пытался предоставить оператор присваивания или использовать std::make_pair
в списке инициализаторов , но безрезультатно.
Как я могу использовать список инициализаторов здесь?Возможно ли это вообще?